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);

Reply via email to