Commit Graph

9986 Commits

Author SHA1 Message Date
Trevor Clinkenbeard edf4e60fa9
Merge pull request #7631 from sfc-gh-tclinkenbeard/global-tag-throttling5
Improvements to `GlobalTagThrottler`
2022-08-02 16:04:20 -07:00
Dennis Zhou b34a54fa7f
blob: allow for alignment of granules to tuple boundaries (#7746)
* blob: read TenantMap during recovery

Future functionality in the blob subsystem will rely on the tenant data
being loaded. This fixes this issue by loading the tenant data before
completing recovery such that continued actions on existing blob
granules will have access to the tenant data.

Example scenario with failover, splits are restarted before loading the
tenant data:
BM - BlobManager
epoch 3:                        epoch 4:
  BM record intent to split.
  Epoch fails.
                                BM recovery begins.
  BM fails to persist split.
                                BM recovery finishes.
                                BM.checkBlobWorkerList()
                                  maybeSplitRange().
                                BM.monitorClientRanges().
                                  loads tenant data.

bin/fdbserver -r simulation -f tests/slow/BlobGranuleCorrectness.toml \
    -s 223570924 -b on  --crash --trace_format json

* blob: add tuple key truncation for blob granule alignment

FDB has a backup system available using the blob manager and blob
granule subsystem. If we want to audit the data in the blobs, it's a lot
easier if we can align them to something meaningful.

When a blob granule is being split, we ask the storage metrics system
for split points as it holds approximate data distribution metrics.
These keys are then processed to determine if they are a tuple and
should be truncated according to the new knob,
BG_KEY_TUPLE_TRUNCATE_OFFSET.

Here we keep all aligned keys together in the same granule even if it is
larger than the allowed granule size. The following commit will address
this by adding merge boundaries.

* blob: minor clean ups in merging code

1. Rename mergeNow -> seen. This is more inline with clocksweep naming
   and removes the confusion between mergeNow and canMergeNow.
2. Make clearMergeCandidate() reset to MergeCandidateCannotMerge to make
   a clear distinction what we're accomplishing.
3. Rename canMergeNow() -> mergeEligble().

* blob: add explicit (hard) boundaries

Blob ranges can be specified either through explicit ranges or at the
tenant level. Right now this is managed implicitly. This commit aims to
make it a little more explicit.

Blobification begins in monitorClientRanges() which parses either the
explicit blob ranges or the tenant map. As we do this and add new
ranges, let's explicitly track what is a hard boundary and what isn't.

When blob merging occurs, we respect this boundary. When a hard boundary
is encountered, we submit the found eligible ranges and start looking
for a new range beginning with this hard boundary.

* blob: create BlobGranuleSplitPoints struct

This is a setup for the following commit. Our goal here is to provide a
structure for split points to be passed around. The need is for us to be
able to carry uncommitted state until it is committed and we can apply
these mutations to the in-memory data structures.

* blob: implement soft boundaries

An earlier commit establishes the need to create data boundaries within
a tenant. The reality is we may encounter a set of keys that degnerate
to the same key prefix. We'll need to be able to split those across
granules, but we want to ensure we merge the split granules together
before merging with other granules.

This adds to the BlobGranuleSplitPoints state of new
BlobGranuleMergeBoundary items. BlobGranuleMergeBoundary contains state
saying if it is a left or right boundary. This information is used to,
like hard boundaries, force merging of like granules first.

We read the BlobGranuleMergeBoundary map into memory at recovery.
2022-08-02 16:06:25 -05:00
He Liu 013b9e3baa
Fixed ChangeServerKeysContext name issue. (#7761)
* Fixed ChangeServerKeysContext name issue.

* Update fdbserver/storageserver.actor.cpp

Co-authored-by: Andrew Noyes <andrew.noyes@snowflake.com>

Co-authored-by: He Liu <heliu@apple.com>
Co-authored-by: Andrew Noyes <andrew.noyes@snowflake.com>
2022-08-02 13:54:27 -07:00
sfc-gh-tclinkenbeard 025085ccb5 Fix GlobalTagThrottler::addRequests 2022-08-02 13:47:04 -07:00
Xiaoxi Wang 07eafcec93
Merge pull request #7763 from sfc-gh-xwang/feature/main/unittest
move waitForMost into generic actors
2022-08-02 13:30:30 -07:00
Chaoguang Lin 48e46cbc81
Add test coverage for SpecialKeyRangeAsyncImpl::getRange (#7671)
* Add getRange test coverage for SpecialKeyRangeAsyncImpl

* Fix the bug in SpecialKeyRangeAsyncImpl found by the test

* Refactor ConflictingKeysImpl::getRange to use containedRanges to simplify the code

* Fix file format

* Initialize SpecialKeyRangeAsyncImpl cache with correct end key

* Add release notes

* Revert "Refactor ConflictingKeysImpl::getRange to use containedRanges to simplify the code"

This reverts commit fdd298f469.
2022-08-02 12:04:40 -07:00
Xiaoxi Wang 3c76ad9e72 move waitForMost into generic actors 2022-08-02 10:38:11 -07:00
Josh Slocum 4b66645d80
Granule file performance benchmark and improvements (#7742)
* added cpu microbenchmark for blob granule files

* Added edge case read benchmarks, and sorting memory deltas

* Sorted merge for granule files

* key block comparison optimization in granule files

* More performance improvements to granule file read

* fixing zlib not supported build

* fixing formatting

* Added debug macro for new debugging prints

* review comments

* more strict compression size validation assert
2022-08-02 11:36:44 -05:00
Josh Slocum b1ff8b8340
Merge pull request #7753 from sfc-gh-jslocum/cf_op_chaos
Add Chaos to Change Feed Operations test
2022-08-02 09:04:38 -05:00
Hao Fu 9db19b9a7c
Retain debug id in prefetch server-server call (#7754) 2022-08-01 19:46:45 -07:00
Ata E Husain Bohra ef6012c1d1
Encrypt BlobGranule delta files (#7735)
* Encrypt  BlobGranule delta files

Description

 diff-1: Address review comments

Major changes proposed by the patch are:
1. Refactor code to allow caching of 'encryption key ctx' as part of
BlobFilePointerRef. The refactoring allows snapshot and/or delta files
to store their own file encryption context.
2. Enable BlobGranule delta file encryption/decryption semantics.

Testing

BlobGranuleCorrrectness  
BlobGranuleCorrectnessClean
BlobGranuleFileUnitTestToml

Description

Testing
2022-08-01 16:34:44 -07:00
Josh Slocum c5c423f2b7 Disabling update/clear post-stop for now in change feed ops 2022-08-01 17:42:32 -05:00
A.J. Beamon ea76eb2beb Transactions could change tenant ID part way through. The dummy transaction could set a new tenant ID but use the old tenant prefix. 2022-07-30 16:16:18 -07:00
Xiaoxi Wang dd902fc772 create ShardsAffectedByTeamFailure.h 2022-07-29 15:12:15 -07:00
Nim Wijetunga 3e45b6657c
Merge pull request #7714 from sfc-gh-nwijetunga/nim/tenant-encryption-property
Encryption as a tenant property
2022-07-29 11:30:19 -07:00
Xiaoxi Wang f0caaad93c
Update fdbserver/DataDistributionQueue.actor.cpp 2022-07-29 10:22:21 -07:00
Xiaoxi Wang e3cf40002d format code 2022-07-29 10:11:10 -07:00
Xiaoxi Wang d8323820f1 remove duplicate code 2022-07-29 10:04:14 -07:00
Josh Slocum ddad5b189e fixing change feed ops test race with live reader and destroying 2022-07-29 07:31:22 -05:00
Hao Fu 62bee7ac9a
Add g_traceBatch for prefetch query (#7730) 2022-07-28 17:54:31 -07:00
Trevor Clinkenbeard 8491c2530f
Merge pull request #7416 from sfc-gh-ljoswiak/fixes/change-coordinators-commit-unknown-result
Ensure change coordinators request came from the same generation proxy
2022-07-28 17:29:24 -07:00
He Liu 35a4cb91d5
Disable ShardedRocksDB in simulation when shard_encode_location_metadata is disabled (#7726)
* Disabled tests for ShardedRocks.

Cleaned up ShardedRocks TraceEvent.

Added assertion in ShardManager::validate().

* Added test trace.

* Make sure TraceEvent contains `ShardedRocks`.

* Exclude ShardedRocksDB when SHARD_ENCODE_LOCATION_METADATA is disabled.

Co-authored-by: He Liu <heliu@apple.com>
2022-07-28 13:54:29 -07:00
Junhyun Shim 83e94781b4
Merge pull request #6842 from sfc-gh-mpilman/features/authz
Authorization
2022-07-28 19:50:24 +02:00
Nim Wijetunga 7d287edc30 initalize values 2022-07-27 17:29:10 -07:00
Xiaoxi Wang 4091a567ab
Merge pull request #7725 from sfc-gh-xwang/fix/main/status
fix storage_metadata disappear because other attribution is missed
2022-07-27 17:14:08 -07:00
Junhyun Shim 631cca6560 More code review suggestions 2022-07-28 01:04:15 +02:00
Xiaoxi Wang bcf022575c fix storage_metadata disappear because other attribution is missed 2022-07-27 15:55:38 -07:00
Junhyun Shim 1e83d7e1ab Apply code review suggestions 2022-07-28 00:47:14 +02:00
Junhyun Shim 144bb4e110
Apply suggestions from code review
Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
2022-07-28 00:45:31 +02:00
Nim Wijetunga 6181d89767 fix test 2022-07-27 13:36:55 -07:00
Junhyun Shim c6342a6e5b
Merge branch 'main' into features/authz 2022-07-27 20:51:32 +02:00
Junhyun Shim 27e2bf60c6 Handle case where exception is thrown before tenant prefix is prepended 2022-07-27 20:13:25 +02:00
Nim Wijetunga 2cd73242de fix merge conflict 2022-07-27 10:58:41 -07:00
Nim Wijetunga 6b525ec053 format 2022-07-27 10:55:58 -07:00
Jon Fu af7a644037 Merge branch 'main' of github.com:apple/foundationdb into jfu-tenant-rename-special-keys 2022-07-27 09:37:38 -07:00
A.J. Beamon d39c0b773a Add a limit to the number of tenants that can be created in a cluster 2022-07-27 08:21:03 -07:00
Nim Wijetunga 50391c35b1 Merge branch 'main' of github.com:sfc-gh-nwijetunga/foundationdb into nim/tenant-encryption-property
* 'main' of github.com:sfc-gh-nwijetunga/foundationdb: (42 commits)
  Get ShardedRocks ready for simulation test. (#7679)
  fixing specific unit test
  formatting
  addressing review comments
  Fix incorrect deserialization of FdbClientLogEvents::Event (#7707)
  Fix a crash bug during CC shutdown process (#7705)
  addressing review comments
  remove runAfter
  Add comments explaining the use of the TransactionState tenant() and hasTenant() functions
  Make sure resumeFromDataMoves() starts after resumeFromShards().
  Fix: during recovery, it was possible for tenant operations to briefly fail because the tenant mode is not known
  formatting
  Fixed granule purging bug and improved debugging for purging
  making purge failures fail test
  cleanup and polish
  Bug fix and cleanup
  First version of key-sorted delta files
  Added full granule read unit test
  Completed delta format unit test
  delta file test and delta generation
  ...
2022-07-27 08:13:30 -07:00
A.J. Beamon dec6dbfbfb
Merge pull request #7549 from sfc-gh-ajbeamon/feature-tenant-groups
Add support for tenant groups
2022-07-27 07:56:27 -07:00
Josh Slocum cf0fadab85
Merge pull request #7655 from sfc-gh-jslocum/improved_cf_testing
Improved change feed testing
2022-07-27 08:04:37 -05:00
Trevor Clinkenbeard 88e54eec5c
Remove unnecessary trace event
Co-authored-by: Xiaoxi Wang <xiaoxi.wang@snowflake.com>
2022-07-27 00:41:40 -07:00
He Liu edbc373815
Get ShardedRocks ready for simulation test. (#7679)
* Disabled tests for ShardedRocks.

Cleaned up ShardedRocks TraceEvent.

Added assertion in ShardManager::validate().

* Added test trace.

* Make sure TraceEvent contains `ShardedRocks`.

Co-authored-by: He Liu <heliu@apple.com>
2022-07-26 21:49:33 -07:00
Josh Slocum 1ea43aa878 Merge branch 'main' into improved_cf_testing 2022-07-26 18:12:58 -05:00
Josh Slocum 77956dc7ae
Merge pull request #7639 from sfc-gh-jslocum/cf_metadata_rewrite
Change Feed Metadata Rewrite and adding targeted fault injection
2022-07-26 18:10:37 -05:00
Jon Fu f0687237fb update comments 2022-07-26 15:41:40 -07:00
Junhyun Shim 5169616b16 Fix unresolved merge conflicts 2022-07-27 00:38:16 +02:00
Junhyun Shim e2a3fedfc7
Merge branch 'main' into features/authz 2022-07-27 00:08:57 +02:00
Jon Fu a3b56ebadc reject overlap in transaction case 2022-07-26 15:04:18 -07:00
Josh Slocum 8b5b7a9b92
Merge pull request #7689 from sfc-gh-jslocum/purge_fixes
Granule Purge Fixes
2022-07-26 17:02:24 -05:00
Josh Slocum 5c2681f0b5 formatting 2022-07-26 16:47:07 -05:00
Josh Slocum 0609aa57d1 Merge branch 'main' into improved_cf_testing 2022-07-26 16:44:13 -05:00