This is an automated email from the ASF dual-hosted git repository.
chenhang 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 f30ff4f2ad Improve sanity test command. (#4045)
f30ff4f2ad is described below
commit f30ff4f2ad4778f1f73b29872e2a95adb22ca116
Author: Yan Zhao <[email protected]>
AuthorDate: Mon Aug 14 09:36:05 2023 +0800
Improve sanity test command. (#4045)
### Background
Start the bookie at branch `master`, notice that there are some logs as
followings:
```
2023-08-08T11:28:58,754 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,784 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,789 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,792 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,797 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,799 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,807 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,810 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,814 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,816 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,818 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
2023-08-08T11:28:58,820 - INFO -
[BookieHighPriorityThread-OrderedExecutor-0-0:ReadEntryProcessorV3@205] -
Ledger fence request received for ledger: 11360 from address:
/192.168.31.216:58247
```
In PR #3924, it will start a scheduled task per 60s. The task will execute
SanityTestCommand.
### Motivation
1. If conf.isSanityCheckMetricsEnabled() is `false`, do not start the
scheduled task.
2. In SanityTestCommand, close the LedgerHandle after the entries write is
done.
---
.../bookkeeper/bookie/BookieStateManager.java | 28 ++++++++++++----------
.../cli/commands/bookie/SanityTestCommand.java | 3 +--
.../cli/commands/bookie/SanityTestCommandTest.java | 3 ++-
3 files changed, 18 insertions(+), 16 deletions(-)
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieStateManager.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieStateManager.java
index fbe7336883..6f029e6782 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieStateManager.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieStateManager.java
@@ -171,19 +171,21 @@ public class BookieStateManager implements StateManager {
return sanityPassed.get();
}
};
- statsLogger.registerGauge(SERVER_SANITY, serverSanityGauge);
- stateService.scheduleAtFixedRate(() -> {
- if (isReadOnly()) {
- sanityPassed.set(1);
- return;
- }
- SanityTestCommand.handleAsync(conf, new
SanityTestCommand.SanityFlags()).thenAccept(__ -> {
- sanityPassed.set(1);
- }).exceptionally(ex -> {
- sanityPassed.set(0);
- return null;
- });
- }, 60, 60, TimeUnit.SECONDS);
+ if (conf.isSanityCheckMetricsEnabled()) {
+ statsLogger.registerGauge(SERVER_SANITY, serverSanityGauge);
+ stateService.scheduleAtFixedRate(() -> {
+ if (isReadOnly()) {
+ sanityPassed.set(1);
+ return;
+ }
+ SanityTestCommand.handleAsync(conf, new
SanityTestCommand.SanityFlags()).thenAccept(__ -> {
+ sanityPassed.set(1);
+ }).exceptionally(ex -> {
+ sanityPassed.set(0);
+ return null;
+ });
+ }, 60, 60, TimeUnit.SECONDS);
+ }
}
private boolean isRegistrationManagerDisabled() {
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommand.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommand.java
index 9d7f3ccd27..d8a1908fb9 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommand.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommand.java
@@ -134,8 +134,7 @@ public class SanityTestCommand extends
BookieCommand<SanityFlags> {
}
CompletableFuture<LedgerHandle> lhFuture = new
CompletableFuture<>();
CompletableFuture<Void> readEntryFuture = new
CompletableFuture<>();
-
- FutureUtils.collect(entriesFutures).thenCompose(_r -> {
+ FutureUtils.collect(entriesFutures).thenCompose(_r ->
lh.closeAsync()).thenCompose(_r -> {
bk.asyncOpenLedger(lh.getId(), BookKeeper.DigestType.MAC, new
byte[0], (orc, olh, octx) -> {
if (orc != BKException.Code.OK) {
LOG.warn("open sanity ledger failed for {}-{}",
lh.getId(), orc);
diff --git
a/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommandTest.java
b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommandTest.java
index a0a0d33a5b..cac5f5633a 100644
---
a/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommandTest.java
+++
b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/SanityTestCommandTest.java
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.UncheckedExecutionException;
import java.util.Enumeration;
import java.util.Vector;
+import java.util.concurrent.CompletableFuture;
import org.apache.bookkeeper.bookie.LocalBookieEnsemblePlacementPolicy;
import org.apache.bookkeeper.client.AsyncCallback.AddCallback;
import org.apache.bookkeeper.client.AsyncCallback.CreateCallback;
@@ -85,7 +86,7 @@ public class SanityTestCommandTest extends
BookieCommandTestBase {
}).when(bk).asyncOpenLedger(anyLong(),
any(BookKeeper.DigestType.class), eq(new byte[0]),
any(OpenCallback.class), any());
});
-
+
when(lh.closeAsync()).thenReturn(CompletableFuture.completedFuture(null));
when(lh.getLastAddConfirmed()).thenReturn(9L);
Enumeration<LedgerEntry> entryEnumeration = getEntry();
when(lh.getId()).thenReturn(1L);