This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 9a3f7e333 RATIS-1816. appendEntryTimer is not accurate due to the
return of writeFuture (#855)
9a3f7e333 is described below
commit 9a3f7e333e87b0107d9a1eb860a41a8d882d67a1
Author: Xiangpeng Hu <[email protected]>
AuthorDate: Fri Mar 17 08:17:07 2023 +0800
RATIS-1816. appendEntryTimer is not accurate due to the return of
writeFuture (#855)
---
.../org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java | 4 ++--
.../org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java | 5 +++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git
a/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
b/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
index 865bdcde9..e591473e8 100644
---
a/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
+++
b/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
@@ -155,8 +155,8 @@ public class SegmentedRaftLogMetrics extends
RaftLogMetricsBase {
appendEntryCount.inc();
}
- public UncheckedAutoCloseable startAppendEntryTimer() {
- return Timekeeper.start(appendEntryTimer);
+ public Timekeeper.Context startAppendEntryTimer() {
+ return appendEntryTimer.time();
}
public Timekeeper getEnqueuedTimer() {
diff --git
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
index 80427ef42..0aab79898 100644
---
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
+++
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
@@ -378,8 +378,8 @@ public class SegmentedRaftLog extends RaftLogBase {
if (LOG.isTraceEnabled()) {
LOG.trace("{}: appendEntry {}", getName(),
LogProtoUtils.toLogEntryString(entry));
}
- try(AutoCloseableLock writeLock = writeLock();
- UncheckedAutoCloseable ignored =
getRaftLogMetrics().startAppendEntryTimer()) {
+ try(AutoCloseableLock writeLock = writeLock()) {
+ final Timekeeper.Context appendEntryTimerContext =
getRaftLogMetrics().startAppendEntryTimer();
validateLogEntry(entry);
final LogSegment currentOpenSegment = cache.getOpenSegment();
if (currentOpenSegment == null) {
@@ -414,6 +414,7 @@ public class SegmentedRaftLog extends RaftLogBase {
} else {
cache.appendEntry(entry,
LogSegment.Op.WRITE_CACHE_WITHOUT_STATE_MACHINE_CACHE);
}
+ writeFuture.whenComplete((clientReply, exception) ->
appendEntryTimerContext.stop());
return writeFuture;
} catch (Exception e) {
LOG.error("{}: Failed to append {}", getName(),
LogProtoUtils.toLogEntryString(entry), e);