You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by iv...@apache.org on 2018/11/28 15:31:19 UTC
[bookkeeper] branch master updated: Only publish suspect ledgers if
they have missing fragments
This is an automated email from the ASF dual-hosted git repository.
ivank pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new dfbfa8d Only publish suspect ledgers if they have missing fragments
dfbfa8d is described below
commit dfbfa8d22844956be599c62f12ed13d8abe52696
Author: Ivan Kelly <iv...@apache.org>
AuthorDate: Wed Nov 28 16:31:13 2018 +0100
Only publish suspect ledgers if they have missing fragments
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.
Reviewers: Sijie Guo <si...@apache.org>
This closes #1834 from ivankelly/auditor-periodic-flake
---
.../src/main/java/org/apache/bookkeeper/replication/Auditor.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
index 1fcd0f8..acf0c09 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
@@ -647,6 +647,11 @@ public class Auditor implements AutoCloseable {
for (LedgerFragment f : fragments) {
bookies.addAll(f.getAddresses());
}
+ if (bookies.isEmpty()) {
+ // no missing fragments
+ callback.processResult(Code.OK, null, null);
+ return;
+ }
publishSuspectedLedgersAsync(
bookies.stream().map(BookieSocketAddress::toString).collect(Collectors.toList()),
Sets.newHashSet(lh.getId())