MCPcopy Create free account
hub / github.com/e2wugui/zeze / Dbh2

Method Dbh2

ZezeJava/ZezeJava/src/main/java/Zeze/Dbh2/Dbh2.java:151–186  ·  view source on GitHub ↗
(Dbh2Manager manager, String raftName, RocksDatabase database,
				RaftConfig raftConf, Config config, boolean writeOptionSync,
				TaskOneByOneByKey taskOneByOne)

Source from the content-addressed store, hash-verified

149 }
150
151 public Dbh2(Dbh2Manager manager, String raftName, RocksDatabase database,
152 RaftConfig raftConf, Config config, boolean writeOptionSync,
153 TaskOneByOneByKey taskOneByOne) {
154 this.manager = manager;
155
156 var selfNode = raftConf.getNodes().get(raftName);
157 if (!selfNode.isSuggestMajority()) {
158 // 根据配置,发现自己不是推荐的多数派,先去检测(等待)建议的多数派产生Leader。
159 // 如果检测失败,继续启动过程,此后即时不是推荐的,也可能成为Leader。
160 Agent.waitForLeader(raftConf);
161 }
162 if (config == null)
163 config = Config.load();
164 config.parseCustomize(this.dbh2Config);
165
166 try {
167 stateMachine = new Dbh2StateMachine(this);
168 raft = new Raft(stateMachine, raftName, database, raftConf, config,
169 "Zeze.Dbh2.Server", Dbh2RaftServer::new, taskOneByOne);
170 raft.getServer().getSocketOptions().setInputBufferMaxProtocolSize(100 * 1024 * 1024);
171 raft.getServer().getSocketOptions().setOutputBufferMaxSize(100 * 1024 * 1024);
172 raftConf.setSnapshotCommitDelayed(true);
173 logger.info("newRaft: {}", raft.getName());
174 stateMachine.openBucket();
175 var writeOptions = writeOptionSync ? RocksDatabase.getSyncWriteOptions() : RocksDatabase.getDefaultWriteOptions();
176 raft.getLogSequence().setWriteOptions(writeOptions);
177 stateMachine.getBucket().setWriteOptions(writeOptions);
178
179 RegisterProtocols(raft.getServer());
180 raft.setOnLeaderReady(this::recoverSplitting);
181 raft.setOnFollowerReceiveKeepAlive(this::onFollowerReceiveKeepAlive);
182 raft.getServer().start();
183 } catch (Exception ex) {
184 throw new RuntimeException(ex);
185 }
186 }
187
188 @Override
189 public void close() throws IOException {

Callers

nothing calls this directly

Calls 15

waitForLeaderMethod · 0.95
loadMethod · 0.95
getSyncWriteOptionsMethod · 0.95
isSuggestMajorityMethod · 0.80
parseCustomizeMethod · 0.80
getServerMethod · 0.80
getLogSequenceMethod · 0.80
getBucketMethod · 0.80

Tested by

no test coverage detected