From 051730af0f68dc1d3315235eac0212a7c1694dce Mon Sep 17 00:00:00 2001 From: lushiji Date: Wed, 19 Jan 2022 11:47:27 +0800 Subject: [PATCH 1/3] update 3 metric: 1.Bookie: ReadBytes use entrySize 2.Journal: report journal write error metric 3.LedgerFragmentReplicator: numBytesRead use readBytes --- .../main/java/org/apache/bookkeeper/bookie/BookieImpl.java | 3 ++- .../src/main/java/org/apache/bookkeeper/bookie/Journal.java | 6 +++++- .../apache/bookkeeper/client/LedgerFragmentReplicator.java | 5 +++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java index f0a002f4583..3f16d22a375 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java @@ -1082,7 +1082,8 @@ public ByteBuf readEntry(long ledgerId, long entryId) LOG.trace("Reading {}@{}", entryId, ledgerId); } ByteBuf entry = handle.readEntry(entryId); - bookieStats.getReadBytes().add(entry.readableBytes()); + entrySize = entry.readableBytes(); + bookieStats.getReadBytes().add(entrySize); success = true; return entry; } finally { 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 2c054a1d93b..1c3c25aa5bb 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 @@ -379,9 +379,9 @@ public int process(boolean shouldForceWrite) throws IOException { return 0; } + long startTime = MathUtils.nowInNano(); try { if (shouldForceWrite) { - long startTime = MathUtils.nowInNano(); this.logFile.forceWrite(false); journalStats.getJournalSyncStats() .registerSuccessfulEvent(MathUtils.elapsedNanos(startTime), TimeUnit.NANOSECONDS); @@ -397,6 +397,10 @@ public int process(boolean shouldForceWrite) throws IOException { } return forceWriteWaiters.size(); + } catch (Throwable e) { + journalStats.getJournalSyncStats() + .registerFailedEvent(MathUtils.elapsedNanos(startTime), TimeUnit.NANOSECONDS); + throw e; } finally { closeFileIfNecessary(); } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java index 90e2006284c..1a4ef32aa26 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java @@ -395,14 +395,15 @@ public void readComplete(int rc, LedgerHandle lh, byte[] data = entry.getEntry(); final long dataLength = data.length; numEntriesRead.inc(); - numBytesRead.registerSuccessfulValue(dataLength); ByteBufList toSend = lh.getDigestManager() .computeDigestAndPackageForSending(entryId, lh.getLastAddConfirmed(), entry.getLength(), Unpooled.wrappedBuffer(data, 0, data.length)); + int readBytes = toSend.readableBytes(); + numBytesRead.registerSuccessfulValue(readBytes); if (replicationThrottle != null) { - updateAverageEntrySize(toSend.readableBytes()); + updateAverageEntrySize(readBytes); } for (BookieId newBookie : newBookies) { long startWriteEntryTime = MathUtils.nowInNano(); From 9ef5ffd7571abce231a2d6eabf4dc72b29b48fc9 Mon Sep 17 00:00:00 2001 From: lushiji Date: Mon, 24 Jan 2022 09:55:03 +0800 Subject: [PATCH 2/3] rollback numBytesRead metric: numBytesRead equal to readableBytes --- .../apache/bookkeeper/client/LedgerFragmentReplicator.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java index 1a4ef32aa26..90e2006284c 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java @@ -395,15 +395,14 @@ public void readComplete(int rc, LedgerHandle lh, byte[] data = entry.getEntry(); final long dataLength = data.length; numEntriesRead.inc(); + numBytesRead.registerSuccessfulValue(dataLength); ByteBufList toSend = lh.getDigestManager() .computeDigestAndPackageForSending(entryId, lh.getLastAddConfirmed(), entry.getLength(), Unpooled.wrappedBuffer(data, 0, data.length)); - int readBytes = toSend.readableBytes(); - numBytesRead.registerSuccessfulValue(readBytes); if (replicationThrottle != null) { - updateAverageEntrySize(readBytes); + updateAverageEntrySize(toSend.readableBytes()); } for (BookieId newBookie : newBookies) { long startWriteEntryTime = MathUtils.nowInNano(); From c68148386c3e317d8e6f34cffc3b66129d93b1fb Mon Sep 17 00:00:00 2001 From: StevenLuMT <42990025+StevenLuMT@users.noreply.github.com> Date: Tue, 25 Jan 2022 09:10:13 +0800 Subject: [PATCH 3/3] Update bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java yes,IOException is more appropriate Co-authored-by: Yong Zhang --- .../src/main/java/org/apache/bookkeeper/bookie/Journal.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1c3c25aa5bb..4d7059d0cdd 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 @@ -397,7 +397,7 @@ public int process(boolean shouldForceWrite) throws IOException { } return forceWriteWaiters.size(); - } catch (Throwable e) { + } catch (IOException e) { journalStats.getJournalSyncStats() .registerFailedEvent(MathUtils.elapsedNanos(startTime), TimeUnit.NANOSECONDS); throw e;