From 2534abfb5b70b3c2681e24299c605badd0c0cba3 Mon Sep 17 00:00:00 2001 From: huangli Date: Sun, 22 Dec 2024 17:40:00 +0800 Subject: [PATCH] refactor: simplification ChainWriter constructor --- .../dongting/raft/store/ChainWriter.java | 25 +++++++++++++------ .../dongting/raft/store/IdxFileQueue.java | 10 +++++--- .../dongting/raft/store/LogFileQueue.java | 10 +++++--- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/server/src/main/java/com/github/dtprj/dongting/raft/store/ChainWriter.java b/server/src/main/java/com/github/dtprj/dongting/raft/store/ChainWriter.java index 8a12a81c..c8e5db33 100644 --- a/server/src/main/java/com/github/dtprj/dongting/raft/store/ChainWriter.java +++ b/server/src/main/java/com/github/dtprj/dongting/raft/store/ChainWriter.java @@ -42,9 +42,11 @@ public abstract class ChainWriter { private final PerfCallback perfCallback; private final RaftGroupConfigEx config; - private final int writePerfType1; - private final int writePerfType2; - private final int forcePerfType; + + private int writePerfType1; + private int writePerfType2; + private int forcePerfType; + private final ByteBufferPool directPool; private final LinkedList writeTasks = new LinkedList<>(); private final LinkedList forceTasks = new LinkedList<>(); @@ -60,13 +62,9 @@ public abstract class ChainWriter { private boolean close; - public ChainWriter(RaftGroupConfigEx config, String fiberNamePrefix, int writePerfType1, int writePerfType2, - int forcePerfType) { + public ChainWriter(String fiberNamePrefix, RaftGroupConfigEx config) { this.config = config; this.perfCallback = config.getPerfCallback(); - this.writePerfType1 = writePerfType1; - this.writePerfType2 = writePerfType2; - this.forcePerfType = forcePerfType; DispatcherThread t = config.getFiberGroup().getThread(); this.directPool = t.getDirectPool(); this.needForceCondition = config.getFiberGroup().newCondition("needForceCond"); @@ -267,4 +265,15 @@ public boolean hasTask() { return writeTaskCount > 0 || forceTaskCount > 0; } + public void setWritePerfType1(int writePerfType1) { + this.writePerfType1 = writePerfType1; + } + + public void setWritePerfType2(int writePerfType2) { + this.writePerfType2 = writePerfType2; + } + + public void setForcePerfType(int forcePerfType) { + this.forcePerfType = forcePerfType; + } } diff --git a/server/src/main/java/com/github/dtprj/dongting/raft/store/IdxFileQueue.java b/server/src/main/java/com/github/dtprj/dongting/raft/store/IdxFileQueue.java index f648bae9..7d7f91f6 100644 --- a/server/src/main/java/com/github/dtprj/dongting/raft/store/IdxFileQueue.java +++ b/server/src/main/java/com/github/dtprj/dongting/raft/store/IdxFileQueue.java @@ -99,8 +99,10 @@ public IdxFileQueue(File dir, StatusManager statusManager, RaftGroupConfigEx gro this.needFlushCondition = groupConfig.getFiberGroup().newCondition("IdxNeedFlush-" + groupConfig.getGroupId()); this.flushDoneCondition = groupConfig.getFiberGroup().newCondition("IdxFlushDone-" + groupConfig.getGroupId()); - this.chainWriter = new IdxChainWriter(groupConfig, 0, PerfConsts.RAFT_D_IDX_WRITE, - PerfConsts.RAFT_D_IDX_FORCE); + this.chainWriter = new IdxChainWriter(groupConfig); + chainWriter.setWritePerfType1(0); + chainWriter.setWritePerfType2(PerfConsts.RAFT_D_IDX_WRITE); + chainWriter.setForcePerfType(PerfConsts.RAFT_D_IDX_FORCE); } public FiberFrame> initRestorePos() throws Exception { @@ -171,8 +173,8 @@ protected FrameCallResult handle(Throwable ex) throws Throwable { class IdxChainWriter extends ChainWriter { - public IdxChainWriter(RaftGroupConfigEx config, int writePerfType1, int writePerfType2, int forcePerfType) { - super(config, "IdxForce", writePerfType1, writePerfType2, forcePerfType); + public IdxChainWriter(RaftGroupConfigEx config) { + super("IdxForce", config); } @Override diff --git a/server/src/main/java/com/github/dtprj/dongting/raft/store/LogFileQueue.java b/server/src/main/java/com/github/dtprj/dongting/raft/store/LogFileQueue.java index c9609b47..8b19debd 100644 --- a/server/src/main/java/com/github/dtprj/dongting/raft/store/LogFileQueue.java +++ b/server/src/main/java/com/github/dtprj/dongting/raft/store/LogFileQueue.java @@ -73,15 +73,17 @@ public LogFileQueue(File dir, RaftGroupConfigEx groupConfig, IdxOps idxOps, long this.heapPool = t.getHeapPool(); this.directPool = t.getDirectPool(); - LogChainWriter chainWriter = new LogChainWriter(groupConfig, PerfConsts.RAFT_D_LOG_WRITE1, - PerfConsts.RAFT_D_LOG_WRITE2, PerfConsts.RAFT_D_LOG_SYNC); + LogChainWriter chainWriter = new LogChainWriter(groupConfig); + chainWriter.setWritePerfType1(PerfConsts.RAFT_D_LOG_WRITE1); + chainWriter.setWritePerfType2(PerfConsts.RAFT_D_LOG_WRITE2); + chainWriter.setForcePerfType(PerfConsts.RAFT_D_LOG_SYNC); this.logAppender = new LogAppender(idxOps, this, groupConfig, chainWriter); } private class LogChainWriter extends ChainWriter { - public LogChainWriter(RaftGroupConfigEx config, int writePerfType1, int writePerfType2, int forcePerfType) { - super(config, "LogForce", writePerfType1, writePerfType2, forcePerfType); + public LogChainWriter(RaftGroupConfigEx config) { + super("LogForce", config); } @Override