From 06f6572f5031b6ce87e8f1b298b564a4adeff886 Mon Sep 17 00:00:00 2001 From: liningrui Date: Fri, 25 Dec 2020 15:52:39 +0800 Subject: [PATCH 1/3] Adapt jraft 1.3.5 and disable wal for raft mode NOTE: In fact, it still cann't fully adapt to the community version of jraft, because it's different from the rocksdb version that hugegraph relies on Change-Id: I83079e799df4d332e968694c7aea0ff11bbcdb81 --- hugegraph-core/pom.xml | 2 +- .../backend/store/raft/RaftSharedContext.java | 16 ++++++++-------- .../store/rocksdb/RocksDBStdSessions.java | 13 ++++++++++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/hugegraph-core/pom.xml b/hugegraph-core/pom.xml index 1aa6354f47..a7b7db29b5 100644 --- a/hugegraph-core/pom.xml +++ b/hugegraph-core/pom.xml @@ -54,7 +54,7 @@ com.alipay.sofa jraft-core - 1.3.3 + 1.3.5 org.slf4j diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftSharedContext.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftSharedContext.java index d76cb41c97..8df14051ff 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftSharedContext.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/store/raft/RaftSharedContext.java @@ -40,7 +40,6 @@ import com.alipay.sofa.jraft.option.RaftOptions; import com.alipay.sofa.jraft.rpc.RaftRpcServerFactory; import com.alipay.sofa.jraft.rpc.RpcServer; -import com.alipay.sofa.jraft.rpc.impl.BoltRaftRpcFactory; import com.alipay.sofa.jraft.util.NamedThreadFactory; import com.alipay.sofa.jraft.util.ThreadPoolUtil; import com.baidu.hugegraph.HugeException; @@ -55,7 +54,6 @@ import com.baidu.hugegraph.config.CoreOptions; import com.baidu.hugegraph.config.HugeConfig; import com.baidu.hugegraph.event.EventHub; -import com.baidu.hugegraph.testutil.Whitebox; import com.baidu.hugegraph.type.HugeType; import com.baidu.hugegraph.type.define.GraphMode; import com.baidu.hugegraph.util.E; @@ -314,12 +312,14 @@ private HugeConfig config() { } private RpcServer initAndStartRpcServer() { - Whitebox.setInternalState( - BoltRaftRpcFactory.class, "CHANNEL_WRITE_BUF_LOW_WATER_MARK", - this.config().get(CoreOptions.RAFT_RPC_BUF_LOW_WATER_MARK)); - Whitebox.setInternalState( - BoltRaftRpcFactory.class, "CHANNEL_WRITE_BUF_HIGH_WATER_MARK", - this.config().get(CoreOptions.RAFT_RPC_BUF_HIGH_WATER_MARK)); + Integer lowWaterMark = this.config().get( + CoreOptions.RAFT_RPC_BUF_LOW_WATER_MARK); + System.setProperty("bolt.channel_write_buf_low_water_mark", + String.valueOf(lowWaterMark)); + Integer highWaterMark = this.config().get( + CoreOptions.RAFT_RPC_BUF_HIGH_WATER_MARK); + System.setProperty("bolt.channel_write_buf_high_water_mark", + String.valueOf(highWaterMark)); PeerId serverId = new PeerId(); serverId.parse(this.config().get(CoreOptions.RAFT_ENDPOINT)); diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java index f9201900f9..f6788d7de0 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java @@ -65,6 +65,7 @@ import com.baidu.hugegraph.backend.store.BackendEntry.BackendColumn; import com.baidu.hugegraph.backend.store.BackendEntry.BackendColumnIterator; import com.baidu.hugegraph.backend.store.BackendEntryIterator; +import com.baidu.hugegraph.config.CoreOptions; import com.baidu.hugegraph.config.HugeConfig; import com.baidu.hugegraph.util.Bytes; import com.baidu.hugegraph.util.E; @@ -683,11 +684,17 @@ private final class StdSession extends RocksDBSessions.Session { private WriteOptions writeOptions; public StdSession(HugeConfig conf) { - boolean bulkload = conf.get(RocksDBOptions.BULKLOAD_MODE); + boolean raftMode = conf.get(CoreOptions.RAFT_MODE); this.batch = new WriteBatch(); this.writeOptions = new WriteOptions(); - this.writeOptions.setDisableWAL(bulkload); - //this.writeOptions.setSync(false); + /* + * When work under raft mode. if store crashed, the state-machine + * can restore by snapshot + raft log, doesn't need wal and sync + */ + if (raftMode) { + this.writeOptions.setDisableWAL(true); + this.writeOptions.setSync(false); + } } @Override From c17c1041a3a663003b90258a9a582531b6a778ed Mon Sep 17 00:00:00 2001 From: liningrui Date: Mon, 28 Dec 2020 14:17:45 +0800 Subject: [PATCH 2/3] move rocksdb disableWAL into another pr Change-Id: I8878b88acb02369dcb8cc2f57871f88d98bc3203 --- .../backend/store/rocksdb/RocksDBStdSessions.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java index f6788d7de0..f4c3baaaf3 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java @@ -684,17 +684,11 @@ private final class StdSession extends RocksDBSessions.Session { private WriteOptions writeOptions; public StdSession(HugeConfig conf) { - boolean raftMode = conf.get(CoreOptions.RAFT_MODE); + boolean bulkload = conf.get(RocksDBOptions.BULKLOAD_MODE); this.batch = new WriteBatch(); this.writeOptions = new WriteOptions(); - /* - * When work under raft mode. if store crashed, the state-machine - * can restore by snapshot + raft log, doesn't need wal and sync - */ - if (raftMode) { - this.writeOptions.setDisableWAL(true); - this.writeOptions.setSync(false); - } + this.writeOptions.setDisableWAL(bulkload); + //this.writeOptions.setSync(false); } @Override From 397ddbc371d99595539aa6e6e0f96759ad173476 Mon Sep 17 00:00:00 2001 From: liningrui Date: Mon, 28 Dec 2020 19:13:16 +0800 Subject: [PATCH 3/3] remove redudant import Change-Id: Id459b0087025d75a13a84791b158d1d093fc3f7b --- .../hugegraph/backend/store/rocksdb/RocksDBStdSessions.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java index f4c3baaaf3..f9201900f9 100644 --- a/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java +++ b/hugegraph-rocksdb/src/main/java/com/baidu/hugegraph/backend/store/rocksdb/RocksDBStdSessions.java @@ -65,7 +65,6 @@ import com.baidu.hugegraph.backend.store.BackendEntry.BackendColumn; import com.baidu.hugegraph.backend.store.BackendEntry.BackendColumnIterator; import com.baidu.hugegraph.backend.store.BackendEntryIterator; -import com.baidu.hugegraph.config.CoreOptions; import com.baidu.hugegraph.config.HugeConfig; import com.baidu.hugegraph.util.Bytes; import com.baidu.hugegraph.util.E;