Commit Graph

11088 Commits

Author SHA1 Message Date
sfc-gh-tclinkenbeard 853458cd75 Merge remote-tracking branch 'origin/main' into subtract-proxy-tag-throttle-duration 2022-10-15 10:27:39 -07:00
sfc-gh-tclinkenbeard a556f21ed2 Merge remote-tracking branch 'origin/main' into limit-gtt-size 2022-10-15 10:26:16 -07:00
sfc-gh-tclinkenbeard a0539bd63b Addressed review comments 2022-10-15 10:26:13 -07:00
Ankita Kejriwal 0f9da9d1ad Merge branch 'main' of github.com:apple/foundationdb into getsizetenant 2022-10-14 16:50:51 -07:00
sfc-gh-tclinkenbeard 4ab947a9b3 Merge remote-tracking branch 'origin/main' into limit-gtt-size 2022-10-14 15:59:57 -07:00
sfc-gh-tclinkenbeard b90722baa6 Add comment for GrvProxyStats latency bands and samples 2022-10-14 15:58:15 -07:00
Josh Slocum 914dfd7438
REST Blob metadata kms connector (#8474)
* Changing RESTKMSConnector request handling to not be synchronous, as that would be a huge perf bottleneck

* Implementation of blob kms fetch

* cleanup

* review comments
2022-10-14 17:49:00 -05:00
Ankita Kejriwal a24ab2d4fa Incorporate code review comments + workload code cleanup 2022-10-14 13:59:36 -07:00
Markus Pilman f5f33c5883
Merge pull request #8473 from sfc-gh-mpilman/features/enforce-workload-name
Force name and description of workloads to be the same
2022-10-14 12:42:03 -06:00
Markus Pilman da5b5a354e Fix failure injection naming 2022-10-14 11:28:03 -06:00
Markus Pilman 180238076c Fix HighContentionPrefixAllocatorWorkload and make untrusted argument to workload factory type safe 2022-10-14 09:51:49 -06:00
Markus Pilman fb1390ef3d reformat code 2022-10-14 08:47:56 -06:00
Josh Slocum 7cec0a5249
Blob metadata refresh (#8456)
* Adding EKP refresh of blob metadata

* Adding re-fetching blob metadata from BGTenantMap

* adding buggifies from code review comments
2022-10-14 08:17:50 -05:00
Markus Pilman 49f0cf5ab0 Force name and description of workloads to be the same 2022-10-13 20:53:48 -06:00
Jingyu Zhou 3609fc8aef
Merge pull request #8470 from sfc-gh-jslocum/blob_kms_valgrind_fix
Fixing memory ownership  in T -> TRef conversion
2022-10-13 17:57:22 -07:00
Ankita Kejriwal 854212fe94 Incorportate code review suggestions 2022-10-13 17:41:31 -07:00
Josh Slocum 05df8cd64c Fixing memory ownership in T -> TRef conversion 2022-10-13 17:19:54 -05:00
Hui Liu 169c341f79
Merge pull request #8386 from sfc-gh-huliu/blobmigrator
Add blob migrator to assist data copy from blob to storage server
2022-10-13 14:46:04 -07:00
Ankita Kejriwal be64b12ecf Clean up TraceEvents, TODOs, and simplify workload. 2022-10-13 14:31:42 -07:00
Josh Slocum 8d650390fc
Fixing race between feed cleanup and persisting memory mutations (#8331) 2022-10-13 16:11:48 -05:00
Ankita Kejriwal 59686fa2e5 Increase the IO timeout to avoid flakiness in simulation tests. 2022-10-13 13:40:40 -07:00
Hui Liu 049df622f1 add a blob migrator 2022-10-13 13:21:45 -07:00
Jingyu Zhou df5825ff65
Merge pull request #8398 from sfc-gh-anoyes/anoyes/idempotency-id2
Initial work for automatic idempotency
2022-10-13 13:07:14 -07:00
Trevor Clinkenbeard b21b04da10
Merge pull request #8466 from sfc-gh-tclinkenbeard/add-fifo-unit-test
Add `/GrvProxyTransactionTagThrottler/Fifo` unit test
2022-10-13 12:20:16 -07:00
sfc-gh-tclinkenbeard 27b11797ff Make pqOfQueues a min heap in the proper way 2022-10-13 10:08:02 -07:00
Jingyu Zhou e4752309a1
Merge pull request #8075 from liquid-helium/validate-data-consistency
Validate data consistency
2022-10-13 09:20:01 -07:00
sfc-gh-tclinkenbeard 79f0e3fcaa Improve mockFifoClient by waiting on all replies concurrently 2022-10-13 08:37:48 -07:00
sfc-gh-tclinkenbeard 63c018ccb3 Add /GrvProxyTransactionTagThrottler/Fifo unit test 2022-10-12 19:47:42 -07:00
Jingyu Zhou 7db6090766
Merge pull request #8445 from neethuhaneesha/rocksdb-hist
RocksDB commit latency sample corrections.
2022-10-12 18:33:45 -07:00
Jingyu Zhou 1bfe00ca61
Merge pull request #8449 from sfc-gh-ahusain/ahusain-auth-token-cleanup
Remove MultiToken Encryption auth-token generation
2022-10-12 17:51:42 -07:00
Markus Pilman 395ac11416
Merge pull request #8463 from sfc-gh-mpilman/bugfixes/different-cluster-same-rv-race
Fix DifferentClustersSameRV workload
2022-10-12 17:36:33 -06:00
neethuhaneesha 3db0c786e5 RocksDB commit latency sample corrections. 2022-10-12 16:19:49 -07:00
He Liu 97acc94a7f Fixed out-of-scope variable issue. 2022-10-12 16:13:57 -07:00
He Liu 2caa4290c6 Fixed clang variable scope issue. 2022-10-12 15:43:33 -07:00
Markus Pilman 9997ebba64 Fix DifferentClustersSameRV workload 2022-10-12 16:14:38 -06:00
He Liu 999c5e3f49 Fixed clang compile errors. 2022-10-12 14:58:15 -07:00
sfc-gh-tclinkenbeard 6f01d97006 Subtract proxyTagThrottleDuration from measured GRV latencies 2022-10-12 14:41:32 -07:00
Yi Wu a2a372d083 Fix Redwood xor encoding incompatibility with 7.1 2022-10-12 14:19:42 -07:00
Yi Wu ac6aaf3785
encryption: fix some data not being encrypted (#8403)
Changes:
1. Change `isEncryptionOpSupported` to not check against `clientDBInfo.isEncryptionEnabled`, but instead against ENABLE_ENCRYPTION server knob. The problem with clientDBInfo is before its being broadcast to the workers, its content is uninitialized, during which some data (e.g. item 2) is not getting encrypted when they should.
2. Fix CommitProxy not encrypting metadata mutations which are recovered from txnStateStore
3. Fix KeyValueStoreMemory (thus TxnStateStore) partial transaction coming from recovery is not encrypted
4. new CODE_PROBE for the above fixes
5. Logging changes
2022-10-12 14:18:56 -07:00
He Liu a43e424d8a Merge branch 'main' of https://github.com/apple/foundationdb into validate-data-consistency 2022-10-12 13:01:07 -07:00
Jon Fu ee0027ba76 remove tenantModeRequired flag and disable defaulttenant for cyclerestart test 2022-10-12 12:32:43 -07:00
Jon Fu a3d42c6073 Merge branch 'main' of github.com:apple/foundationdb into tenant-restarting-tests 2022-10-12 11:59:27 -07:00
Jon Fu 056f938991 add tenantmode to testconfig and change precedence rules for some tenant options 2022-10-12 11:51:50 -07:00
Andrew Noyes cf48ae206f Benchmark adding idempotency id mutations for commit batch 2022-10-12 11:29:09 -07:00
Nim Wijetunga 8ca6397e97
Enable Backup Tests for Encrypted Snapshots (#8419)
* enable encrypted snapshot backup tests

* address pr comments

* remove tenant cache when decoding

* remove client knob
2022-10-12 10:45:30 -07:00
Josh Slocum 96574bacaa
Change Feed TSS Support (#8384)
* Change Feed TSS Support

* bug fixing for rare mismatch cases

* Adding rollback handling to tss change feed comparison
2022-10-12 10:23:51 -05:00
Ata E Husain Bohra 858d562fce Remove MultiToken Encryption auth-token generation
Description

The current code supports two modes for authentication encryption:
1. Single auth-token mode
2. Multi auth-token mode

The code currently uses SingleAuthToken mode only, the multi-auth
token mode was added to support large file (such as backup files)
encryption assisting encryption authentication by allowing reading
header independently from encrypted payload itself. However, the
backup files are organized as 'chunks' and every chunk is encrypted,
hence, MultiToken mode isn't used in the code.

Removing the usage saves 32 bytes per encryption header, which might
translate to decent storage saving, further, allows lesser encryption
header overhead when encrypting small Key-Value mutations.

Testing

BlobCipher unittests
EncryptionOps.toml
2022-10-11 22:49:53 -07:00
Ankita Kejriwal 3223208f0c Explicitly pass `arena` to the `withPrefix` function.
Also update some TraceEvents to be more succinct.
2022-10-11 18:35:01 -07:00
Trevor Clinkenbeard fec05e5bc6
Merge pull request #8450 from sfc-gh-tclinkenbeard/proxy-tag-enforcement
Add `GrvProxyTransactionTagThrottler` class
2022-10-11 16:54:49 -07:00
sfc-gh-tclinkenbeard cc09bd3ca2 Assert that transactionsReleased vector is not resized multiple times in GrvProxyTransactionTagThrottler::releaseTransactions 2022-10-11 15:33:51 -07:00
Kevin Hoxha 6c62ff3cf8 configdb: Fix ConfigIncrementWorkload ConfigDatabaseUnitTests to use tuple instead of binary reader 2022-10-11 15:32:01 -07:00
Kevin Hoxha ff1b2df8f6 fdbcli: Add options for knob management
- setknob <knob_name> <knob_value> [config_class]
- getknob <knob_name> [config_class]
- Added new option to begin to specify if it's a configuration txn. Syntax is begin [config-txn]
- Added utility function for converting tuples to string
- Added knobmanagment test in fdbcli_tests.py
2022-10-11 15:32:01 -07:00
sfc-gh-tclinkenbeard 2a791a6212 Addressed review comments 2022-10-11 15:11:26 -07:00
Ankita Kejriwal 7abe785669 Merge branch 'main' of github.com:apple/foundationdb into getsizetenant 2022-10-11 15:03:42 -07:00
Trevor Clinkenbeard bd55bcd4ff
Update GrvTransactionRateInfo::rate initialization
Co-authored-by: Markus Pilman <markus.pilman@snowflake.com>
2022-10-11 14:44:52 -07:00
Andrew Noyes 9e7630869e Test ids > 16 bytes in workload 2022-10-11 13:46:40 -07:00
Andrew Noyes e51d2a765c Make sure ids are unique 2022-10-11 13:46:40 -07:00
Andrew Noyes aad3899cb7 Enforce the lifetime of a write tx is actually <= MAX_WRITE_TRANSACTION_LIFE_VERSIONS 2022-10-11 13:46:39 -07:00
Andrew Noyes 43a72ad406 Use versionstamped keys instead of atomic add in test
This makes it easier to debug if something goes wrong
2022-10-11 13:46:39 -07:00
Andrew Noyes 6ef8d7ec95 Add AutomaticIdempotencyWorkload 2022-10-11 13:46:39 -07:00
Andrew Noyes 711b6a29d3 Add CommitTransactionRequest::idempotencyId 2022-10-11 13:46:39 -07:00
Andrew Noyes 329a2724ff Add IdempotencyId struct 2022-10-11 13:46:39 -07:00
Ankita Kejriwal 11658c7135 Merge branch 'main' of github.com:apple/foundationdb into getsizetenant 2022-10-11 13:09:47 -07:00
sfc-gh-tclinkenbeard 0466eff56b Fix potential memory error in GrvTransactionTagThrottler::releaseTransactions 2022-10-11 13:09:21 -07:00
sfc-gh-tclinkenbeard 7e2764243b Fix /GrvTransactionRateInfo/Simple unit test 2022-10-11 13:04:29 -07:00
Jon Fu 2c0f936740 Merge branch 'main' of github.com:apple/foundationdb into tenant-restarting-tests 2022-10-11 12:41:03 -07:00
Jon Fu 3c7d17e2bb work in progress commit for defaulttenant in restarting tests 2022-10-11 12:40:36 -07:00
Josh Slocum 06d9ebd620
Adding domain name to blob metadata requests (#8415) 2022-10-11 14:31:14 -05:00
He Liu 88c7304e04 Resolved comments. 2022-10-11 10:24:31 -07:00
Xiaoxi Wang f16ba3991f add comment 2022-10-11 09:27:05 -07:00
sfc-gh-tclinkenbeard 3cc7932953 Merge remote-tracking branch 'origin/main' into proxy-tag-enforcement 2022-10-11 08:51:07 -07:00
Xiaoxi Wang b76268544f disallow workload injection in IDDTxnProcessorApiCorrectness 2022-10-10 22:41:31 -07:00
sfc-gh-tclinkenbeard a4e9e525bd Apply clang-format to GrvProxyTransactionTagThrottler.actor.cpp 2022-10-10 22:31:09 -07:00
sfc-gh-tclinkenbeard 671c4fe0a2 Make GrvProxyTransactionTagThrottler a FIFO queue for unthrottled transactions, even for transactions with different tags 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard f1cb4e40f5 Avoid adding untagged requests to GrvProxyTransactionTagThrottler 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 128e8c43da Include unactorcompiler.h in actor header files 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard ebe956b228 Add copyright headers to GrvProxyTransactionTagThrottler files 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 93fe133784 Clean up tags in GrvProxyTransactionTagThrottler::updateRates 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 24a0dd9f17 Change GrvProxy tag throttling algorithm.
The new algorithm assumes there is only one tag per request,
so queues are partitioned by tag. This is a more efficient approach than
the old algorithm.
2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard bbf69b2d0a Rename TagQueue::runEpoch to TagQueue::releaseTransactions 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard f74b724c03 Addressed review comments 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 31e8fb0490 Rename epoch to release window in GrvTransactionRateInfo
The term "epoch" was used in too many places
2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 8ff66d6fad Add comments to TagQueue class 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 69b3c09cf7 Run 10 clients in /TagQueue/MultiClient 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 34857bd2bf Remove outSystemPriority parameter from TagQueue::runEpoch 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard e313edbb85 Add proxyTagThrottledDuration field to GetReadVersion[Request|Reply] 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 2684464cc6 Use TagQueue in GRV proxy when ENFORCE_TAG_THROTTLING_ON_PROXIES is true 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 8405d42aa9 Add /TagQueue/Batch unit test 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard bffc41fa45 Add /TagQueue/MultiClient unit test 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 66dc0396dd Add /TagQueue/MultiTag unit test 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard a79419788f Add /TagQueue/Immediate unit test 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard c29213eec2 Reorder process of queues in TagQueue::runEpoch 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 0203c93a44 Add TagQueue class 2022-10-10 22:10:08 -07:00
sfc-gh-tclinkenbeard 4c973c11ad Modularize and comment GrvTransactionRateInfo 2022-10-10 22:10:05 -07:00
Steve Atherton d74c072382
Merge pull request #8448 from sfc-gh-yiwu/encrypt_disable
Add a knob to disable Redwood tenant page split
2022-10-10 21:17:43 -07:00
Ankita Kejriwal 12aaabb283 Fix bugs in finding correct shards for tenant aware storage metrics.
* Account for tenant in during cache invalidation in NativeAPI actor.
* Account for tenant prefix while checking whether a shard is readable
  on storage server.

This commit also adds many debug TraceEvents that will later be
removed.
2022-10-10 18:52:03 -07:00
Ankita Kejriwal 8ed2b85427 Reduce workload flakiness.
* Scale up the workload so that the size for the tenant is large enough
  so that the estimated size will not be rounded down to 0.
* Retry getting the size in the workload (with a delay, upto a maximum
  time) to allow for the size estimate to catch up.
2022-10-10 18:40:31 -07:00
Yi Wu 5dc14accfd Add a knob to disable Redwood tenant page split 2022-10-10 17:02:37 -07:00
Ata E Husain Bohra 595520537a Extend DBCoreState to store EncryptionAtRest status
Description

 diff-1: Avoid (de)serialize 'encryptionAtRest' for version < tagLocality

Patch updates DBCoreState to incude `encryptionAtRestMode` stored
in co-ordinators. The change only extends DBCoreState, however,
the value wouldn't get serialzied as the 'CoordinateState' writer
(ReusableCoordiantedState) protocol version is left at DBCoreState.
Approach assists in playing nice with downgrades, the subsequent
release would bump up writer protocol version to support
'EncryptionAtRest' protcol version compatibility.

Testing

devRunCorrectness - 100K
2022-10-10 13:17:30 -07:00
Ata E Husain Bohra 9c937a8e6e Extend DBCoreState to store EncryptionAtRest status
Description

Patch updates DBCoreState to incude `encryptionAtRestMode` stored
in co-ordinators. The change only extends DBCoreState, however,
the value wouldn't get serialzied as the 'CoordinateState' writer
(ReusableCoordiantedState) protocol version is left at DBCoreState.
Approach assists in playing nice with downgrades, the subsequent
release would bump up writer protocol version to support
'EncryptionAtRest' protcol version compatibility.

Testing

devRunCorrectness - 100K
2022-10-10 13:17:30 -07:00
He Liu a730e32164 Merge branch 'main' of https://github.com/apple/foundationdb into validate-data-consistency 2022-10-10 13:17:17 -07:00
neethuhaneesha bc72f9d5fd
Storage server readrange and update latency. (#8380) 2022-10-10 12:52:07 -07:00
sfc-gh-tclinkenbeard b930a8a380 Fix bug in GlobalTagThrottlerImpl::getQuotaRatio 2022-10-10 12:51:27 -07:00
neethuhaneesha 4b238e3985
RocksDB disable WAL for experimentation. (#8443) 2022-10-10 12:32:05 -07:00
sfc-gh-tclinkenbeard b887b1e85c Limit number of tags tracked by GlobalTagThrottler 2022-10-10 12:28:26 -07:00
He Liu b52edd8658 Merge branch 'main' of https://github.com/apple/foundationdb into validate-data-consistency 2022-10-10 11:00:05 -07:00
He Liu 1931e3266f Resolve comments. 2022-10-10 10:28:19 -07:00
Jingyu Zhou 63f5705560
Merge pull request #8414 from sfc-gh-xwang/feature/main/txnProcessor_team
Replace self->cx with self->dbContext() method and trivial renaming
2022-10-10 10:09:36 -07:00
Jingyu Zhou 20864e67de
Merge pull request #8224 from liquid-helium/thread-priority
Added knobs for RocksDB reader/writer thread priorities.
2022-10-10 09:38:25 -07:00
sfc-gh-tclinkenbeard 6f4e155623 Include unactorcompiler.h in actor header files 2022-10-08 11:59:07 -07:00
Steve Atherton 8ccdc91b5e Merge commit '7c89cd705faee52d5d78e6c77665cb7cc4502f58' into redwood-commit-overlap 2022-10-07 15:59:45 -07:00
Jingyu Zhou 7c89cd705f
Merge pull request #8402 from halfprice:zhewu/add-satellite-info
Add info in HealthMonitorDetectDegradedPeer to indicate whether a peer is in satellite DC
2022-10-07 11:25:55 -07:00
Markus Pilman ea1325a552
Merge pull request #8319 from sfc-gh-tclinkenbeard/add-rare-code-probe-annotation
Add `rare` code probe decoration
2022-10-07 09:39:00 -06:00
He Liu 3a15f4cf55 Merge branch 'main' of https://github.com/apple/foundationdb into thread-priority 2022-10-06 20:48:21 -07:00
Zhe Wu f5381ca2a8 Format clean 2022-10-06 14:09:00 -07:00
Zhe Wu 43cd419078 Comments cleanup 2022-10-06 14:09:00 -07:00
Zhe Wu c4c71c7806 Add tests 2022-10-06 14:09:00 -07:00
Zhe Wu f41d88cd45 Ignore CC_DEGRADED_PEER_DEGREE_TO_EXCLUDE for disconnected peers. Core logic 2022-10-06 14:09:00 -07:00
Steve Atherton c1b2519b9c Remove additional calls to KVS init in TLogServer in favor of a single call at startup. 2022-10-06 13:14:24 -07:00
Steve Atherton 1030f6c536 Merge commit '14107b315d84b78daf6df6b9541c2168cae10f99' into redwood-commit-overlap 2022-10-06 13:07:32 -07:00
Steve Atherton f2dbbcce40 Allow overlapping commits in Redwood in which the caller drops the commit futures. Call IKVS::init() in TLogServer. 2022-10-06 12:48:06 -07:00
Yi Wu d3e5fa6789 Fix heap-use-after-free in TenantAwareEncryptionKeyProvider 2022-10-06 11:00:11 -07:00
A.J. Beamon f8186988bc
Merge pull request #8378 from sfc-gh-ajbeamon/tenant-support-for-database-switching
Add tenant support for database switching
2022-10-05 14:57:33 -07:00
He Liu 88c37c81d8 Merge branch 'main' of https://github.com/apple/foundationdb into thread-priority 2022-10-05 14:20:53 -07:00
He Liu d64d405af7 Validate all storage servers. 2022-10-05 14:19:33 -07:00
Sreenath Bodagala e83229ed8b
- Version vector specific: Propagate the latest commit version, as (#8393)
part of the read request, when reading from a storage server.
2022-10-05 16:23:56 -04:00
Steve Atherton 354e36fb41
Merge pull request #8400 from sfc-gh-satherton/sqlite-sim-fix-main
Sim-only bug fix where SQLite can take too long to shut down
2022-10-05 13:10:45 -07:00
Jon Fu 299b1b32e2 create new tracking key for metacluster traces 2022-10-05 12:08:36 -07:00
Jon Fu 30902da0d2 trackLatest on recovery event 2022-10-05 11:57:41 -07:00
Jon Fu 2fe1d19e95 Merge branch 'main' of github.com:apple/foundationdb into metacluster-status 2022-10-05 11:48:04 -07:00
Josh Slocum dc917453c1
Targeted blob granules fault injection (#8231) 2022-10-05 13:44:38 -05:00
Josh Slocum 8592f7e253
Added test check to verify change feeds get cleaned up at the end of blob granule tests (#8322)
* implemented check, but it doesn't always work

* cleanup
2022-10-05 12:58:05 -05:00
Hui Liu 9799329b99
Merge pull request #8390 from sfc-gh-huliu/actor
Misc changes for blob manifest dumper
2022-10-05 10:30:56 -07:00
Markus Pilman 45a31884d5 Address review comments 2022-10-05 09:30:25 -06:00
Markus Pilman 0361cf74e5 fix RocksDB compilation errors 2022-10-05 09:21:15 -06:00
Markus Pilman 67076aae4c Fix compilation errors 2022-10-05 07:52:54 -06:00
Markus Pilman 1f568fe9e9 Fix compilation errors 2022-10-05 07:48:34 -06:00
Zhe Wu a09d6e8b08 Add info in HealthMonitorDetectDegradedPeer to indicate whether a peer is in satellite DC 2022-10-04 23:09:30 -07:00
Steve Atherton 9a934cf98b Sim-only bug fix where SQLite can take too long to shut down so its files remain open when the next virtual process starts. 2022-10-04 19:29:38 -07:00
Markus Pilman 23edfd0d59 Fix formatting 2022-10-04 18:33:30 -06:00
Markus Pilman 550488b020 Merge remote-tracking branch 'origin/main' into bugfixes/open-for-ide
# Conflicts:
#	bindings/c/CMakeLists.txt
#	fdbclient/include/fdbclient/GetEncryptCipherKeys.actor.h
#	fdbserver/BackupWorker.actor.cpp
#	fdbserver/BlobWorker.actor.cpp
#	fdbserver/CommitProxyServer.actor.cpp
#	fdbserver/KeyValueStoreMemory.actor.cpp
#	fdbserver/StorageCache.actor.cpp
#	fdbserver/include/fdbserver/GetEncryptCipherKeys.actor.h
#	fdbserver/storageserver.actor.cpp
#	fdbserver/workloads/PhysicalShardMove.actor.cpp
#	flow/CMakeLists.txt
2022-10-04 18:27:48 -06:00
Xiaoxi Wang 16290ca439 Merge branch 'main' of https://github.com/apple/foundationdb into feature/main/txnProcessor_team 2022-10-04 16:39:38 -07:00
Xiaoxi Wang 2ad4f29539 dbContext() replace self->cx, remove cx member 2022-10-04 16:39:22 -07:00
Xiaoxi Wang 15666851fc
Merge pull request #8335 from sfc-gh-xwang/feature/main/txnProcessor_team
Move part of methods in DDTeamCollection to IDDTxnProcessor
2022-10-04 16:02:29 -07:00
Markus Pilman 97dfc6823f fixed build with OPEN_FOR_IDE 2022-10-04 17:01:02 -06:00
neethuhaneesha a565863189
RocksDB compaction knobs and stats. (#8392) 2022-10-04 15:13:50 -07:00
Xiaoxi Wang 21b2e11bc4 getWorkers from IDDTxnProcessor 2022-10-04 14:57:04 -07:00
Xiaoxi Wang 28e170ca69 remove unnecessary Database cx parameters 2022-10-04 14:29:45 -07:00
Yi Wu 5c549601d2
Split Redwood page by tenant boundary (#7979)
Redwood encrypt with page granularity. To do per-tenant encryption (i.e. each tenant are encrypted with different set of cipher keys), we need to split Redwood pages by tenant boundary. Moreover, it also needs to handle different tenant modes:
* tenantMode = disabled: do not split page by tenant, all data encrypt using default encryption domain.
* tenantMode = required: look at the prefix of the keys and split by tenant accordingly, and encrypt in tenant specific encryption domain accordingly.
* tenantMode = optional: some key ranges may not map to a tenant. In additional to looking at the key prefix, the key provider also query the tenant prefix index. For prefixes not found in the tenant prefix index, corresponding key should be encrypted using the default encryption domain.

The change also enforce data for each tenant forms a subtree, and key of the link to the subtree is exactly the tenant prefix.

This PR is building on top of #8172 and use the IPageEncryptionKeyProvider interface added there. Changes:
* In `writePages` and `splitPages`, query the key provider to split page accordingly.
* In `commitSubtree`, when doing in-place update (to both of leaf or internal page), check if the entry being insert belong to the same encryption domain as existing data of the page. If not, fallback to full page rebuild, where `writePages` will handle the page split.
* When updating the root, check if it is encrypted using non-default (i.e. tenant specific) domain. If so, add a redundant root node which will be encrypted with default encryption domain.

Tested with 100K run of `Lredwood/correctness/btree` unit test, where it uses `RandomEncryptionKeyProvider`, which is updated to support and generate random encryption domain with 4 byte domain prefixes.
2022-10-04 12:53:55 -07:00
Hui Liu 50b3a8d3ba misc changes for manifest dumper
1) move dumper to a dedicated actor
2) include blob manager epoch into the manifest name
3) keep multiple manifest files(up to 5)
2022-10-04 10:33:43 -07:00
A.J. Beamon 55b880432e
Merge pull request #8379 from sfc-gh-ajbeamon/literal-string-ref-removal
LiteralStringRef removal
2022-10-04 09:41:42 -07:00
Xiaoxi Wang 4cf4ccc089 correct getServerListAndProcessClasses implementation (100k pass) 2022-10-03 22:24:35 -07:00
A.J. Beamon 53593c77ac When updating watches after a database switch, lookup the tenant again to get the ID on the new cluster. Update the switching test to set up tenants properly. 2022-10-03 09:24:13 -07:00
A.J. Beamon 0a1d03c3d7 Formatting fixes 2022-10-03 09:23:17 -07:00
Xiaoxi Wang 76f2dc8ce0 merge upstream/main 2022-10-02 22:07:42 -07:00
sfc-gh-tclinkenbeard fec791be62 Merge remote-tracking branch 'origin/main' into split-failure-injection-workloads 2022-09-30 18:00:48 -07:00
A.J. Beamon 111bf9e34d Add macros for literal string ref versions of __FUNCTION__ and __FILE__ 2022-09-30 16:05:47 -07:00
A.J. Beamon e1fe28b78b Switch some usages of LiteralStringRef to use the _sr suffix 2022-09-30 16:04:16 -07:00
Ata E Husain Bohra 442ed0de10
Update TenantEntryCache workload refresh to handle fault injection (#8369)
* Update TenantEntryCache workload refresh to handle fault injection

Description

 diff-1: Add trace event to log wait

Patch update TenantEntryCache::testCacheRefresh to better handle fault
injection causing longer cluster recovery/availability delays. The
test is modified to loop for a threshold time waiting for next round
of tenantCache refresh cycle to happen. Otherwise throws 'timed_out'
error.

Testing

devRunCorrectness - 100K
2022-09-30 15:48:40 -07:00
Yao Xiao 957ce81a7d
Add per CF stats. (#8354) 2022-09-30 15:25:29 -07:00
Jon Fu 13f022160c add trace detail 2022-09-30 15:02:10 -07:00
Ata E Husain Bohra 201eac77cf
Init TLogPersistent storage for a sharedTLog (#8363)
* Init TLogPersistent storage for a sharedTLog

Description

  diff-1: Address review comments

Patch udpates the code to intialize TLogPersistent storage for a
shared TLog independent of intializing persistentState for a
versioned Tlog data. Appraoch allows initializing Tlog persistent
storage as well as writing 'persistFormat' key for a shared TLog
earlier in the TLog creation lifecycle.

Testing

devRunCorrectness - 100K
2022-09-30 14:06:53 -07:00
Nim Wijetunga 90ce4053f4
Repair Dead Data Center Outside Quiet Database (#8359)
* fix snap test

* repair dead data center
2022-09-30 13:59:02 -07:00
Hui Liu 1f87286424
Merge pull request #8366 from sfc-gh-huliu/fix7
fix killMachine - make sure we have at least 1 blob worker in a dc
2022-09-30 13:56:32 -07:00
Hui Liu 9db48eb10c fix killMachine - make sure we have at least 1 blob worker in a dc 2022-09-30 11:18:27 -07:00
Hui Liu 88be74732f
Merge pull request #8365 from sfc-gh-huliu/fix6
injected faults should be retryable errors in blob worker
2022-09-30 09:59:06 -07:00
Lukas Joswiak 020e28a63f Disable RocksDB storage engine in unit test TestConfig 2022-09-30 08:59:47 -07:00
He Liu 5f975623fb Merge branch 'main' of https://github.com/apple/foundationdb into thread-priority 2022-09-30 08:57:53 -07:00
Ankita Kejriwal 999809e79b Increase the data in the workload and add ASSERTs for expected values. 2022-09-29 19:21:44 -07:00
Ankita Kejriwal 5a3cd51255 Remove temporary TraceEvents and comments from previous commits 2022-09-29 18:53:11 -07:00
Ankita Kejriwal c2b6b288b7 Fixes in the GetEstimatedRangeSize workload
* Run the workload on a trusted client rather than untrusted
  clients. This allows the workload to be substantially simplified
  as well as enables testing for the case where no tenant is
  present.
* Explicitly pass tenant to BulkSetup so that the setup phase
  can be run in parallel for multiple tenants without causing a race.
2022-09-29 18:34:47 -07:00
Ankita Kejriwal 0264262f78 Explicitly pass tenant to BulkSetup for use in Transactions
With this change, BulkSetup accepts Optional<TenantName> as a parameter.
It then uses this while constructing transactions. If a TenantName is
passed to a transaction this way, the transaction can use this tenant
rather than relying on the DatabaseContext. This can be used by
workloads to run the BulkSetup in parallel for multiple tenants without
causing a race.
2022-09-29 18:34:35 -07:00
Ankita Kejriwal de90e1aab1 Improve the code in the actors and server, simplify the workload 2022-09-29 18:34:35 -07:00
Ankita Kejriwal f63934117d Make the storage metrics function tenant aware [WIP]
This change makes the getEstimatedRangeSizeBytes function tenant aware.
Previously, this function would return the size of the requested
keyspace even if the tenant in the Transaction or DatabaseContext did
not match the tenant corresponding to the keyspace.

Also make some improvements to the new workload.
2022-09-29 18:32:04 -07:00
Ankita Kejriwal 85ba47f4c8 Add a workload to test getEstimatedRangeSizeBytes funtionality 2022-09-29 18:28:39 -07:00
Jon Fu 1b333734a2 set updaterDelay on every loop 2022-09-29 16:53:37 -07:00
Hui Liu 01d7668fd1 injected faults should be retryable errors in blob worker 2022-09-29 16:47:31 -07:00
Jon Fu 461e42bfe1 restructure updater code and add capacity check in metacluster management workload 2022-09-29 16:24:02 -07:00
Ata E Husain Bohra 03f1d13be3
Enable encryption authentication configurability (#8312)
* Enable encryption authentication configurability

Description

 diff-1: Remove memcpy due to auth-token computation
         Address review comments

Patch proposes major changes:
1. Enable FDB to choose encryption authentication as a configurable
parameter. Fix issues choosing ENCRYPT_HEADER_AUTH_TOKEN_NONE mode.
2. Introduce AES_CMAC as supported encryption authentication scheme.

Patch allows cluster to govern: if encryption authentication needs to
enabled, if yes, then choose from two supported schemes:
1. HMAC_SHA_256
2. AES_256_CMAC

Testing

devRunCorrectness - 100K
BlobCipher unittests
EncryptionOps.toml
BlobGranuleCorrectness/BlobGranuleCorrectnessClean
2022-09-29 16:18:55 -07:00
He Liu 63b8d775a3
Knob for RocksDb behaviors (#8360)
* Added knob for rocksdb suggest compact.

* Added ROCKSDB_LEVEL_COMPACTION_DYNAMIC_LEVEL_BYTES knob.

Co-authored-by: He Liu <heliu@apple.com>
2022-09-29 15:40:29 -07:00
Nim Wijetunga 232e23c87e
Snapshot Backup Encryption (#8095)
* inital commit

* add encryption support

* refactor passing encryption keys

* disable encryption codepath

* pass enable encryption cli arg for fdbbackup

* change encryption key passing

* only enable encryption for backup if tenant mode is required

* revert server knobs

* ignore json trace files

* --amend

* integrate ekp

* add comments

* comments

* comments

* revert knobs

* fix bug

* modify encrypted backup logic

* use common prefix

* check boundaries between begin and end key

* return system encrypt domain

* modify

* add tenant entry cache to backup

* slight revert

* format

* Trigger Build

* format

* use tenant name to fetch keys

* Trigger Build

* Trigger Build

* merge

* fix getting ekp

* fix bug

* address pr comments

* Trigger Build

* Trigger Build

* remove faulty check
2022-09-29 14:45:47 -07:00
sfc-gh-tclinkenbeard 2434f18c5c Enable failure injection for all simulation tests 2022-09-29 14:14:24 -07:00
Zhe Wu a160fc697e Address comments by passing currentTime by value 2022-09-29 13:55:16 -07:00
Zhe Wu fcbd65c2ea Add unit test 2022-09-29 13:55:16 -07:00
Zhe Wu 219dde9f41 differentiate degraded peers and disconnected peers in gray failure 2022-09-29 13:55:16 -07:00
A.J. Beamon 93d08b55ba
Merge pull request #8350 from sfc-gh-ajbeamon/fix-metacluster-workload-heap-use-after-free
Fix heap use after free in metacluster management workload
2022-09-29 13:38:32 -07:00
A.J. Beamon 5d075d3aff Fix heap use after free 2022-09-29 12:34:36 -07:00
Jon Fu e26be7a099 Merge branch 'main' of github.com:apple/foundationdb into metacluster-status 2022-09-29 11:37:50 -07:00
Jon Fu 257dbff430 recreate transaction every loop in background updater 2022-09-29 11:34:36 -07:00
Jon Fu 6357ad1750 pass info through cc data to populate in status 2022-09-28 16:18:44 -07:00
Xiaoxi Wang 1cc46a98f8 solve merge conflicts 2022-09-28 14:34:42 -07:00
Xiaoxi Wang 3578832c69 merge upstream/main 2022-09-28 14:01:50 -07:00
A.J. Beamon c8bb15e8ee
Merge pull request #8216 from sfc-gh-ajbeamon/backup-support-for-tenants
Include tenant and metacluster metadata in backups
2022-09-28 12:00:24 -07:00
Trevor Clinkenbeard ef13985feb
Merge pull request #8320 from sfc-gh-tclinkenbeard/read-write-fungible
Make read and write quotas fungible
2022-09-28 10:59:37 -07:00
Xiaoxi Wang 2a640f927c
Merge pull request #8232 from sfc-gh-xwang/feature/main/txnProcessor_tracker
Port the DB methods calling in DDShardTracker through DDTxnProcessor interface
2022-09-28 10:33:28 -07:00
Nim Wijetunga 251afa3610
Set g_simulator fields for restart tests (#8318)
* fix tests

* fix tenant concurrency

* Set g_simulator variables for restart tests

* fix machine attrition for restarting
2022-09-28 10:09:26 -07:00
sfc-gh-tclinkenbeard ffe1529f51 Apply clang-format 2022-09-27 19:18:18 -07:00
Xiaoxi Wang f2dea33d08 add global var transactionRetryableErrors 2022-09-27 18:14:34 -07:00
A.J. Beamon 3353103d9d Fix filtering of potential backup mutations in commit proxy and backup worker; add code probe to ensure we are testing default backup sharing and add some tests to hit it 2022-09-27 15:25:30 -07:00
Xiaoxi Wang 07dae1620c Merge branch 'main' of https://github.com/apple/foundationdb into feature/main/txnProcessor_team 2022-09-27 11:56:02 -07:00