sijie closed pull request #1739: Issue #1738: Journal: add a metric for the 
time ForceWriteRequest spent in the queue
URL: https://github.com/apache/bookkeeper/pull/1739
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookKeeperServerStats.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookKeeperServerStats.java
index 9afd8a58f7..e048bd732e 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookKeeperServerStats.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookKeeperServerStats.java
@@ -92,6 +92,7 @@
     String JOURNAL_ADD_ENTRY = "JOURNAL_ADD_ENTRY";
     String JOURNAL_FORCE_LEDGER = "JOURNAL_FORCE_LEDGER";
     String JOURNAL_SYNC = "JOURNAL_SYNC";
+    String JOURNAL_FORCE_WRITE_ENQUEUE = "JOURNAL_FORCE_WRITE_ENQUEUE";
     String JOURNAL_MEM_ADD_ENTRY = "JOURNAL_MEM_ADD_ENTRY";
     String JOURNAL_PREALLOCATION = "JOURNAL_PREALLOCATION";
     String JOURNAL_FORCE_WRITE_LATENCY = "JOURNAL_FORCE_WRITE_LATENCY";
diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
index 1b0d7070ba..0db23c6345 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
@@ -360,9 +360,12 @@ private void recycle() {
         private boolean isMarker;
         private long lastFlushedPosition;
         private long logId;
+        private long enqueueTime;
 
         public int process(boolean shouldForceWrite) throws IOException {
             forceWriteQueueSize.dec();
+            
fwEnqueueTimeStats.registerSuccessfulEvent(MathUtils.elapsedNanos(enqueueTime), 
TimeUnit.NANOSECONDS);
+
             if (isMarker) {
                 return 0;
             }
@@ -434,6 +437,7 @@ private ForceWriteRequest 
createForceWriteRequest(JournalChannel logFile,
         req.lastFlushedPosition = lastFlushedPosition;
         req.shouldClose = shouldClose;
         req.isMarker = isMarker;
+        req.enqueueTime = MathUtils.nowInNano();
         forceWriteQueueSize.inc();
         return req;
     }
@@ -613,6 +617,7 @@ static void writePaddingBytes(JournalChannel jc, ByteBuf 
paddingBuffer, int jour
     private final OpStatsLogger journalAddEntryStats;
     private final OpStatsLogger journalForceLedgerStats;
     private final OpStatsLogger journalSyncStats;
+    private final OpStatsLogger fwEnqueueTimeStats;
     private final OpStatsLogger journalCreationStats;
     private final OpStatsLogger journalFlushStats;
     private final OpStatsLogger journalProcessTimeStats;
@@ -677,6 +682,7 @@ public Journal(int journalIndex, File journalDirectory, 
ServerConfiguration conf
         journalAddEntryStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_ADD_ENTRY);
         journalForceLedgerStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_FORCE_LEDGER);
         journalSyncStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_SYNC);
+        fwEnqueueTimeStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_FORCE_WRITE_ENQUEUE);
         journalCreationStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_CREATION_LATENCY);
         journalFlushStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_FLUSH_LATENCY);
         journalQueueStats = 
statsLogger.getOpStatsLogger(BookKeeperServerStats.JOURNAL_QUEUE_LATENCY);


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to