Commit Graph

164 Commits

Author SHA1 Message Date
Jingyu Zhou 6c4a9b5f23 Fix DD stuck when remote DC is dead
When remote DC is down, the remote team collection of DD can initializing
waiting for the remote to recover (all_tlog_recruited state). However, the
getTeam request can already be served by the remote team collection. So, for
a RelocateShard (data movement such as split, move), it will get a team for
the remote DC. But the data movement can't make progress on the remote team
because the remote DC hasn't recovered yet. Because of the stuck of data
movement, the primary cannot reach the "storage_recovered" state and stay in
accepting_commit state.

The specifc test failure: slow/ApiCorrectness.toml -s 339026305 -b on
at commit:  0edd899d65

In this test, primary DC has 1 SS killed, remote DC has 2 TLog and 2 SS killed.
So the remote is dead, the remaining 2 SSes can't make progress because of the
loss of 2 TLogs. The repairDeadDatacenter() can't reach the "storage_recovered"
state due to DD's failure of moving shards away from the killed SS in the
primary.

The fix is to exclude all remote in repairDeadDatacenter() so that tells DD to
mark all SSes in the remote as unhealthy. Another fix is to return empty
results for getTeam request if the remote team collection is not ready. This
will allow the data movement to continue, essentially remote team is not changed
for the data movement.
2023-02-10 11:11:07 -08:00
He Liu 33a43cde79
Fixed error type. (#9101) 2023-01-06 10:45:58 -08:00
He Liu 34b3172e34
Improved SHARD_ENCODE_LOCATION_METADATA migration. (#9077)
* Improved SHARD_ENCODE_LOCATION_METADATA migration.

* Cleanup.

* Cancel itself if a data move finds a conflicting data move. Fixed
transaction reset issue.

* Cancel data move in a retry loop to avoid corrupted mutations.

Co-authored-by: He Liu <heliu@apple.com>
2023-01-04 12:57:33 -08:00
Zhe Wu 5f51129834 Fix other call site using new MoveKeysParams 2022-11-29 13:29:02 -08:00
Zhe Wu e3410268b5 Make finishMoveShards and DDMockTxnProcessor work with list of key ranges for data movement 2022-11-29 13:29:02 -08:00
Zhe Wu 3c9130e6d1 Make startMoveShards take a list of key ranges 2022-11-29 13:29:02 -08:00
Xiaoxi Wang b2451e600a Merge branch 'main' of https://github.com/apple/foundationdb into feature/main/dataApi 2022-11-15 17:04:49 -08:00
Xiaoxi Wang 4691a35215 format code 2022-11-10 13:11:24 -08:00
Xiaoxi Wang 7c9334121a mark MoveKeysParams const& 2022-11-10 12:51:22 -08:00
Markus Pilman ec78424543 Do not require missing remote destinations to complete a fetch 2022-11-08 12:14:18 -07:00
Xiaoxi Wang 96cf3f855b add rawMoveShard function 2022-11-07 16:47:14 -08:00
He Liu 8d76636a7f
Don't unassign ranges from dest servers if they are skipped. (#8611)
Co-authored-by: He Liu <heliu@apple.com>
2022-10-31 12:07:42 -07:00
He Liu 7bb823edbe
Replace KeyRange with std::vector<KeyRange> in DataMoveMetaData and (#8591)
* Replace KeyRange with std::vector<KeyRange> in DataMoveMetaData and
CheckpointMetaData.

* Checked if ranges.empty().

* fmt.

* Resolved some comments.

Co-authored-by: He Liu <heliu@apple.com>
2022-10-28 15:22:55 -07:00
Xiaoxi Wang d7a408928a Revert "extract startMoveKeysTransaction method"
This reverts commit 014398a5a0d9b3442a5c626197f1d65ff6c177e3.
2022-10-16 21:38:11 -07:00
Xiaoxi Wang 885f8242d9 Revert "extract finishMoveKeysTransaction method"
This reverts commit 66e91a0faa8badff00ce8b7a296c5ff726be432b.
2022-10-15 23:02:06 -07:00
Xiaoxi Wang 73efbd7e41 Revert "remove strange naming"
This reverts commit ba8e8c6719e1edc2e69739c4cabf00863a7d3cfa.
2022-10-15 22:55:28 -07:00
Xiaoxi Wang e8e6f47e09 format code 2022-10-15 22:52:43 -07:00
Xiaoxi Wang 00c19ec9ed expose rawStartMovement and rawFinishMovement 2022-10-15 22:52:42 -07:00
Xiaoxi Wang cb86b38496 remove strange naming 2022-10-15 22:52:42 -07:00
Xiaoxi Wang 16ca02f048 extract finishMoveKeysTransaction method 2022-10-15 22:52:42 -07:00
Xiaoxi Wang e959bdef8d extract startMoveKeysTransaction method 2022-10-15 22:52:42 -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
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
Markus Pilman 97dfc6823f fixed build with OPEN_FOR_IDE 2022-10-04 17:01:02 -06:00
sfc-gh-tclinkenbeard 985958c260 Add rare code probe decoration 2022-09-25 15:28:32 -07:00
Xiaoxi Wang 1f1a66be39 merge upstream/main 2022-09-14 12:32:28 -07:00
Xiaoxi Wang 674da807ad add readMoveKeysLock method and catch movekeys_conflict() in the test workload 2022-09-14 12:17:47 -07:00
Xiaoxi Wang 949b1c1af9 Add MoveKeysParams struct; use txnProcessor->moveKeys() 2022-09-12 15:40:18 -07:00
He Liu fa418fd784
Change SHARD_ENCODE_LOCATION_METADATA to a server knob. (#7770)
Co-authored-by: He Liu <heliu@apple.com>
2022-08-03 13:51:40 -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
A.J. Beamon fee131f24d
Merge pull request #7591 from sfc-gh-ajbeamon/key-backed-types-range-read-more
Add support for returning a more flag from key backed types' range reads
2022-07-20 15:57:50 -07:00
Markus Pilman 1de37afd52
Make TEST macros C++ only (#7558)
* proof of concept

* use code-probe instead of test

* code probe working on gcc

* code probe implemented

* renamed TestProbe to CodeProbe

* fixed refactoring typo

* support filtered output

* print probes at end of simulation

* fix missed probes print

* fix deduplication

* Fix refactoring issues

* revert bad refactor

* make sure file paths are relative

* fix more wrong refactor changes
2022-07-19 13:15:51 -07:00
A.J. Beamon c4cd72bea1 Fix a few compile warnings about unused variables 2022-07-19 10:01:41 -07:00
A.J. Beamon 7bca503528 Use narrow includes in key backed types; remove some unnecessary return statements. 2022-07-14 13:26:43 -07:00
He Liu bc5bfaffda
Shard based move (#6981)
* Shard based move.

* Clean up.

* Clear results on retry in getInitialDataDistribution.

* Remove assertion on SHARD_ENCODE_LOCATION_METADATA for compatibility.

* Resolved comments.

Co-authored-by: He Liu <heliu@apple.com>
2022-07-07 20:49:16 -07:00
A.J. Beamon 62683b4140 Update key backed types to support a templated Codec. This required updating the existing Codec to convert from objects into byte strings through tuples. 2022-07-01 10:11:02 -07:00
sfc-gh-tclinkenbeard a71099471b Update copyright header dates 2022-03-21 13:36:23 -07:00
A.J. Beamon 1d44ef1c8e Specify system key access for a few move keys transactions 2022-03-15 09:23:30 -07:00
A.J. Beamon fb73e1857a Some get key requests should not happen within a tenant. Don't set read_system_keys in watch logic unless necessary. Set access_system_keys in a couple movekeys functions. 2022-03-15 09:23:30 -07:00
Andrew Noyes 7a9217a392
Add contrib/debug_determinism (#6389)
* Add contrib/debug_determinism

Add an instrumentation-based technique for debugging unseen mismatches. Also guard a few existing sources of nondeterminism that don't affect unseen with the DEBUG_DETERMINISM macro.

Also change the simulated run loop to not run as the only task inside the real run loop, since that was a source of nondeterminism.

Also fix nondeterminism from calling timer_int

* Add StorageMetadataType::currentTime

Basically a deterministic-in-simulation version of timer_int that we can
use instead of timer_int for StorageMetadataType::createdTime
2022-02-25 12:54:31 -08:00
A.J. Beamon 250a88e682 Enforce that trace event suppression calls happen first when using trace event call chaining. Fix various instances where we weren't following this requirement. 2022-02-24 12:25:52 -08:00
Xiaoxi Wang 6dc5921575
createdTime based storage wiggler (#6219)
* add storagemetadata

* add StorageWiggler;

* fix serverMetadataKey bug

* add metadata tracker in storage tracker

* finish StorageWiggler

* update next storage ID

* change pid to server id

* write metadata when seed SS

* add status json fields

* remove pid based ppw iteration

* fix time expression

* fix tss metadata nonexistence; fix transaction retry when retrieving metadata

* fix checkMetadata bug when store type is wrong

* fix remove storage status json

* format code

* refactor updateNextWigglingStoragePID

* seperate storage metadata tracker and store type tracker

* rename pid

* wiggler stats

* fix completion between waitServerListChange and storageRecruiter

* solve review comments

* rename system key

* fix database lock timeout by adding lock_aware

* format code

* status json

* resolve code format/naming comments

* delete expireNow; change PerpetualStorageWiggleID's value to KeyBackedObjectMap<UID, StorageWiggleValue>

* fix omit start rount

* format code

* status json reset

* solve status json format

* improve status json latency; replace binarywriter/reader to objectwriter/reader; refactor storagewigglerstats transactions

* status timestamp
2022-02-04 15:04:30 -08:00
A.J. Beamon d8e161f89e Refactor NativeAPI transactions to create and pass around a reference counted state object. Watches no longer use the tranasction info object but instead use their own state. 2021-12-17 11:57:39 -08:00
He Liu 9c835a8e17 merge fix 2021-09-22 16:55:49 -07:00
He Liu a1f6dcc2d5 merge from master 2021-09-22 13:07:38 -07:00
He Liu 95f64f97de resolved some fmt issues 2021-09-20 11:58:30 -07:00
He Liu b2afa6e2f5 throw an error is no team can be found for a dropped range 2021-09-20 11:53:27 -07:00
He Liu 4d5bf08da8 address comments 2021-09-19 17:03:06 -07:00
Xiaoge Su abf73047ca Enforce std:: specifier rather than using namespace 2021-09-16 19:40:28 -07:00
He Liu ef7fdc0781 fmt 2021-09-15 10:32:09 -07:00