mirror of
https://github.com/apple/foundationdb.git
synced 2025-06-02 19:25:52 +08:00
fix: do not count a server as read-write unless it has a recent version, because it could have been readable a long time ago
This commit is contained in:
parent
d2b0c07558
commit
110309272c
@ -94,9 +94,9 @@ Future<Void> checkMoveKeysLockReadOnly( Transaction* tr, MoveKeysLock lock ) {
|
||||
return checkMoveKeysLock(tr, lock, false);
|
||||
}
|
||||
|
||||
ACTOR Future<Optional<UID>> checkReadWrite( Future< ErrorOr<Version> > fReply, UID uid ) {
|
||||
ACTOR Future<Optional<UID>> checkReadWrite( Future< ErrorOr<Version> > fReply, UID uid, Version version ) {
|
||||
ErrorOr<Version> reply = wait( fReply );
|
||||
if (!reply.present())
|
||||
if (!reply.present() || reply.get() < version)
|
||||
return Optional<UID>();
|
||||
return Optional<UID>(uid);
|
||||
}
|
||||
@ -155,7 +155,7 @@ ACTOR Future<vector<vector<Optional<UID>>>> findReadWriteDestinations(Standalone
|
||||
vector< Future<Optional<UID>> > checks;
|
||||
for(int s=0; s<storageServerInterfaces.size(); s++) {
|
||||
checks.push_back( checkReadWrite( storageServerInterfaces[s].getShardState.getReplyUnlessFailedFor(
|
||||
GetShardStateRequest( rangeIntersectKeys, GetShardStateRequest::NO_WAIT), SERVER_KNOBS->SERVER_READY_QUORUM_INTERVAL, 0, TaskMoveKeys ), dest[s] ) );
|
||||
GetShardStateRequest( rangeIntersectKeys, GetShardStateRequest::NO_WAIT), SERVER_KNOBS->SERVER_READY_QUORUM_INTERVAL, 0, TaskMoveKeys ), dest[s], tr->getReadVersion().get() ) );
|
||||
}
|
||||
|
||||
allChecks.push_back(getAll(checks));
|
||||
|
Loading…
x
Reference in New Issue
Block a user