Only publish suspect ledgers if they have missing fragments #1834
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a fix for a flake in
AuditorPeriodicCheckTest#testIndexCorruption. Auditor#checkAllLedgers()
runs a check on all ledgers, passing ProcessLostFragmentsCb as a
callback to LedgerChecker#checkLedger for each one.
LedgerChecker#checkLedger triggers the callback on completion,
regardless of whether there are fragments missing on not. Previously,
ProcessLostFragments was not checking if there were lost fragments
before publishing the ledger as suspected in zookeeper.
The flake triggered as there were always two ledgers that existed when
the check occurred, both would be reported as suspected, and it was
random which would be returned while polling for underreplicated
ledgers.
The fix is to check that something is actually underreplicated before
publishing.