Don't fail ConsistencyCheck on first mismatch

ConsistencyCheck fails when it sees the first corrupted shard. We may want to
keep it running so that we can see all the corrupted data in logs.
This commit is contained in:
Vishesh Yadav 2022-10-21 17:02:02 -07:00
parent ada51ff12b
commit aa99b89d53
2 changed files with 7 additions and 5 deletions

View File

@ -393,6 +393,7 @@ ACTOR Future<bool> checkDataConsistency(Database cx,
state double rateLimiterStartTime = now();
state int64_t bytesReadInthisRound = 0;
state bool resume = !(restart || shuffleShards);
state bool testResult = true;
state double dbSize = 100e12;
if (g_network->isSimulated()) {
@ -710,7 +711,7 @@ ACTOR Future<bool> checkDataConsistency(Database cx,
(!storageServerInterfaces[j].isTss() &&
!storageServerInterfaces[firstValidServer].isTss())) {
testFailure("Data inconsistent", performQuiescentChecks, true);
return false;
testResult = false;
}
}
}
@ -949,7 +950,7 @@ ACTOR Future<bool> checkDataConsistency(Database cx,
}
*bytesReadInPrevRound = bytesReadInthisRound;
return true;
return testResult;
}
ACTOR Future<Void> runDataValidationCheck(ConsistencyScanData* self) {

View File

@ -394,6 +394,7 @@ struct ConsistencyCheckWorkload : TestWorkload {
state Standalone<VectorRef<KeyValueRef>>
serverList; // "\xff/serverList/[[serverID]]" := "[[StorageServerInterface]]"
state Standalone<VectorRef<KeyValueRef>> serverTag; // "\xff/serverTag/[[serverID]]" = "[[Tag]]"
state bool testResult = true;
std::vector<Future<bool>> cacheResultsPromise;
cacheResultsPromise.push_back(self->fetchKeyValuesFromSS(cx, self, storageCacheKeys, cacheKeyPromise, true));
@ -581,7 +582,7 @@ struct ConsistencyCheckWorkload : TestWorkload {
for (j = 0; j < keyValueFutures.size(); j++) {
ErrorOr<GetKeyValuesReply> rangeResult = keyValueFutures[j].get();
// if (rangeResult.isError()) {
// throw rangeResult.getError();
// throw rangeResult.getError();
// }
// Compare the results with other storage servers
@ -709,7 +710,7 @@ struct ConsistencyCheckWorkload : TestWorkload {
.detail("MatchingKVPairs", matchingKVPairs);
self->testFailure("Data inconsistent", true);
return false;
testResult = false;
}
}
}
@ -755,7 +756,7 @@ struct ConsistencyCheckWorkload : TestWorkload {
.detail("BytesRead", bytesReadInRange);
}
}
return true;
return testResult;
}
// Directly fetch key/values from storage servers through GetKeyValuesRequest