Commit Graph

292 Commits

Author SHA1 Message Date
Ata E Husain Bohra dbcab0b1bd
Revert "Refactor GetEncryptCipherKeys (#9600)" (#9708)
This reverts commit 2702665e35.
2023-03-15 12:10:08 -07:00
Nim Wijetunga 2702665e35
Refactor GetEncryptCipherKeys (#9600)
* inital commit

* address pr comments
2023-03-08 17:05:03 -08:00
A.J. Beamon 55b752edf1 Check transaction validity with respect to tenants even if it will fail with a conflict. This allows us to report the appropriate non-retryable error instead. 2023-02-28 15:47:00 -08:00
Jingyu Zhou a350a929b9
Merge pull request #9494 from sfc-gh-jslocum/bg_cp_improvements
addressing review comments and fixmes in bg commit proxy code
2023-02-28 12:30:58 -08:00
Lukas Joswiak 47fc53ed6e Adds more detailed mutation logging to commit proxy
The commit proxy writes a `ProxyMetrics` trace every 5 seconds. This
event contains a lot of useful information, such as the number of commit
batches that arrived and exited, the number of mutations processed, the
number of bytes those mutations made up, etc.. However, it is difficult
to tell what the workload pattern looks like within these 5 second
intervals when the metrics are being calculated.

This PR adds a new trace, `ProxyDetailedMetrics`, which logs itself
every 100ms. It currently only writes the number of mutations and the
number of mutation bytes that arrived during the 100ms time period. But
it should be easy to add more metrics in the future.

It's possible this increased logging could cause issues. Based off a
simulation run of the `WriteDuringRead` test, I got the following
results:

```
$ rg ProxyDetailedMetrics trace.json | wc -l
    6877
$ rg "Roles\": \".*CP.*\"" trace.json | wc -l
   11402
$ wc -l trace.json
   96147 trace.json
```

So on processes running as a commit proxy, this approximately doubled
the number of lines logged. But relative to the cluster overall, it only
added about 5% overhead.

If we want to reduce this number, one possibility would be to not write
a trace if all the values being written are 0. I'm not sure if this
would help much in production, but in simulation the large majority of
the traces (99%+) consist of zero values.
2023-02-28 09:48:39 -08:00
Josh Slocum 716a9c3817 addressing review comments and fixmes in bg commit proxy code 2023-02-27 10:51:47 -06:00
Josh Slocum 6187811f71
Reworking getBlobGranuleRanges to also use commit proxy rpc for authz, and adding test (#9470) 2023-02-24 17:15:32 -06:00
Nim Wijetunga 29819b0645
Change Feed Bug Fix + Encryption Asserts (#9457)
* add encryption asserts

* modify function name

* address pr comments

* address pr comments

* Trigger Build
2023-02-23 19:33:25 -08:00
Markus Pilman 15d8548c0e Merge remote-tracking branch 'origin/main' into features/tenant-lock2
# Conflicts:
#	fdbserver/ApplyMetadataMutation.cpp
#	fdbserver/storageserver.actor.cpp
2023-02-21 13:39:35 -07:00
Josh Slocum 958f3b531b
Plumbing blob worker mapping through commit proxy like storage server (#9401)
* Plumbing blob worker mapping through commit proxy like storage server mapping

* review comments

* formatting
2023-02-21 13:21:44 -06:00
Junhyun Shim 2497aa5701
Clamp GetKeyServerLocations result to tenant prefix (#9424) 2023-02-21 18:55:24 +01:00
Yi Wu eac757d186
EaR: cleanup encryption knobs (#9386)
Changes:
* Cleanup all encryption knobs 
* Update simulated cluster to randomly enable encryption with higher probability
2023-02-18 13:18:20 -08:00
Ata E Husain Bohra 99b23ac04d
EaR: Configurable encryption support for Tlog mutations (#9394)
* EaR: Configurable encryption support for TLog mutations

Description

  diff-1 : Address review comments

Major changes includes:
1. Update the code involved in ensuring Tlog mutation encryption to be
compliant with "configurable encryption" feature.
2. Update ENABLE_CONFIGURABLE_ENCRYPTION flag to be 'true' by default
and BUGGIFY it.

Testing

devRunCorrectness - 100K
2023-02-16 19:01:59 -08:00
Nim Wijetunga bf85c9f8af
Backup Mutation Log Separates Tenant Map Modifications During Restore (#9292)
mutation log separates tenant map modifications
2023-02-14 16:46:09 -08:00
Yi Wu fe18c87ac6
EaR: commit proxy fetch additional cipher keys post-resolution (#9308)
Commit proxy needs to fetch additional cipher keys post-resolution, since tenant ids for raw access requests and cross-tenant clear ranges are calculated after resolution.
2023-02-14 13:05:51 -08:00
Markus Pilman 3b4bd1692a
Remove unused function
Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
2023-02-13 18:22:25 +01:00
Markus Pilman 3017e15448 Merge remote-tracking branch 'origin/main' into features/tenant-lock2
# Conflicts:
#	fdbclient/include/fdbclient/TenantManagement.actor.h
#	fdbserver/storageserver.actor.cpp
#	fdbserver/workloads/TenantManagementWorkload.actor.cpp
2023-02-13 11:43:07 +01:00
Xiaoxi Wang ac1ddc81b0 remove debug trace; change function comment 2023-02-11 13:17:59 -08:00
Xiaoxi Wang a0f7943fc3 simplify implementation of lowerBoundTenantId and withinSingleTenant 2023-02-10 22:14:59 -08:00
Xiaoxi Wang ffc5733e9c add comments 2023-02-10 12:51:13 -08:00
Xiaoxi Wang ffadea08cb change isSingleTenant check; add unit tests 2023-02-10 12:29:38 -08:00
Xiaoxi Wang 09da7efdc0 handle clear range when tenantMap.size() == 0 2023-02-09 22:28:18 -08:00
Xiaoxi Wang a77bf236c7 fix unit test bug 2023-02-08 16:09:32 -08:00
Xiaoxi Wang e75f38a6fc extract pushToBackupMutations method and add single tenant range validation 2023-02-08 14:35:35 -08:00
Xiaoxi Wang e28fc664d0 extract shouldBackup method 2023-02-08 13:25:46 -08:00
Markus Pilman 1c712df709 Tenant lock workload succeeding 2023-02-08 15:51:09 +01:00
Xiaoxi Wang 145b81170c add unit test for replaceRawClearRanges 2023-02-07 13:21:18 -08:00
Xiaoxi Wang 6df5f1fa56 Merge branch 'main' of https://github.com/apple/foundationdb into feature/main/clearRange 2023-02-06 14:28:35 -08:00
Yi Wu d3bc2afc8e
EaR: storage server uses encryption DB config (#9115)
The PR is updating storage server and Redwood to enable encryption based on the encryption mode in DB config, which was previously controlled by a knob. High level changes are
1. Passing encryption mode in DB config to storage server
    1.1 If it is a new storage server, pass the encryption mode through `InitializeStorageRequest`. the encryption mode is pass to Redwood for initialization
    1.2 If it is an existing storage server, on restart the storage server will send `GetStorageServerRejoinInfoRequest` to commit proxy, and commit proxy will return the current encryption mode, which it get from DB config on its own initialization. Storage server will compare the DB config encryption mode to the local storage encryption mode, and fail if they don't match
2. Adding a new `encryptionMode()` method to `IKeyValueStore`, which return a future of local encryption mode of the KV store instance. A KV store supporting encryption would need to persist its own encryption mode, and return the mode via the API.
3. Redwood accepts encryption mode from its constructor. For a new Redwood instance, caller has to specific the encryption mode, which will be stored in Redwood per-instance file header. For existing instance, caller is supposed to not passing the encryption mode, and let Redwood find it out from its own header.
4. Refactoring in Redwood to accommodate the above changes.
2023-02-06 14:02:31 -08:00
Markus Pilman 1fb3c33b3f Merge remote-tracking branch 'origin/main' into features/tenant-lock2
# Conflicts:
#	fdbserver/CommitProxyServer.actor.cpp
2023-02-06 11:58:49 +01:00
Xiaoxi Wang 3a84fc5375 fix temporary tenantMode=0 by only updating db info when recovery count increasing 2023-02-05 18:37:46 -08:00
Xiaoxi Wang 8371883e3b remove log; disabled clear range temporarily 2023-02-03 12:49:23 -08:00
Xiaoxi Wang b0902a515a handle prefix convert to negative id 2023-02-03 12:26:25 -08:00
Xiaoxi Wang 0e242226bc add trace log; fix size bug 2023-02-03 10:36:57 -08:00
Xiaoxi Wang ae6b57d5c8 handle system keys 2023-02-02 16:25:41 -08:00
Xiaoxi Wang 3e1fee8ed4 finalize splitClearRangeByTenant unit test and implement replaceRawClearRanges 2023-02-02 15:19:21 -08:00
Xiaoxi Wang a8013bad5c add splitClearRangeByTenant and unit tests 2023-02-01 20:25:56 -08:00
Xiaoxi Wang 911f849312
Apply suggestions from code review
Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
2023-01-31 09:13:49 -08:00
Xiaoxi Wang f1c6d0ee2a fix tenantIds set condition when tenant set metadata version key 2023-01-30 16:58:57 -08:00
Xiaoxi Wang 971920e417 add tenant check trace; delete isSystemKey check; fix clear range condition bug 2023-01-30 14:21:17 -08:00
Xiaoxi Wang 04ceb2c0e9 change tenantIds initialization; format code; 2023-01-29 22:21:27 -08:00
Xiaoxi Wang d1d860a342 merge upstream/main 2023-01-27 12:15:04 -08:00
Xiaoxi Wang 6ce2f5159e update CP dbinfo conditionally to prevent temporary tenant mode change 2023-01-27 11:55:28 -08:00
Markus Pilman 64c11c1f34 Implemented tenant lock and basic test 2023-01-26 15:47:39 +01:00
Xiaoxi Wang 0bb2718f2a expected size of tenantIds 2023-01-25 15:27:11 -08:00
Xiaoxi Wang 33bddb31c7 parse tenant id during getResolution phase 2023-01-25 09:49:04 -08:00
Xiaoxi Wang 9cb7df318b add debug trace events; fix workload load tenant selection 2023-01-24 15:39:13 -08:00
Xiaoxi Wang 42bd94d95e fix RawTenantAccess apply changes bug 2023-01-23 17:04:44 -08:00
Xiaoxi Wang 3c9b47e7b5 Change tenant check to disallow tenant map changing and normal key writting in the same transaction;
Change RawTenantAccess checking accordingly;
Fix versionstamp set op check bug;
Fix TenantManagementConcurrencyWorkload's invalid test parameter write;
2023-01-23 11:16:22 -08:00
Jingyu Zhou 70dcff7903
Merge pull request #9194 from sfc-gh-dadkins/sfc-gh-dadkins/commit-debug-typos
Fix some typos in the CommitDebug tags.
2023-01-23 09:26:08 -08:00