stateIs0 / lu-raft-kv

this is raft java project. raft-kv-storage
https://thinkinjava.cn/2019/01/12/2019/2019-01-12-lu-raft-kv/
Apache License 2.0
771 stars 211 forks source link

按照步骤启动失败了,抛出了RocksDBException的异常。 #18

Closed KevinClair closed 1 year ago

KevinClair commented 1 year ago

按照文章的步骤启动的,启动第二个应用的时候报错了

Exception in thread "main" java.lang.ExceptionInInitializerError
    at cn.think.in.java.impl.DefaultStateMachine.getInstance(DefaultStateMachine.java:72)
    at cn.think.in.java.constant.StateMachineSaveType.<clinit>(StateMachineSaveType.java:32)
    at cn.think.in.java.RaftNodeBootStrap.boot(RaftNodeBootStrap.java:58)
    at cn.think.in.java.RaftNodeBootStrap.main(RaftNodeBootStrap.java:38)
Caused by: java.lang.RuntimeException: org.rocksdb.RocksDBException: Failed to create lock file: ./rocksDB-raft/null/stateMachine/LOCK: Áíһ¸ö³ÌÐòÕýÔÚʹÓôËÎļþ£¬½ø³ÌÎ
    at cn.think.in.java.impl.DefaultStateMachine.<init>(DefaultStateMachine.java:67)
    at cn.think.in.java.impl.DefaultStateMachine.<init>(DefaultStateMachine.java:36)
    at cn.think.in.java.impl.DefaultStateMachine$DefaultStateMachineLazyHolder.<clinit>(DefaultStateMachine.java:88)
    ... 4 more
Caused by: org.rocksdb.RocksDBException: Failed to create lock file: ./rocksDB-raft/null/stateMachine/LOCK: Áíһ¸ö³ÌÐòÕýÔÚʹÓôËÎļþ£¬½ø³ÌÎ
    at org.rocksdb.RocksDB.open(Native Method)
    at org.rocksdb.RocksDB.open(RocksDB.java:231)
    at cn.think.in.java.impl.DefaultStateMachine.<init>(DefaultStateMachine.java:65)
    ... 6 more
leakey0626 commented 1 year ago

看起来是端口号配置不对。你在idea的启动项里加入VM参数 -DserverPort=8775 每个进程都配置不同的端口号,就行了。

KevinClair commented 1 year ago

看起来是端口号配置不对。你在idea的启动项里加入VM参数 -DserverPort=8775 每个进程都配置不同的端口号,就行了。

刚刚又试了一下,现在其中一个节点请求其他节点都失败,应用也都启动了。

leakey0626 commented 1 year ago

可能是RPC的问题,你试试我fork的这个版本https://github.com/leakey0626/lu-raft-kv

leakey0626 commented 1 year ago

可以参考一下我的commit里边关于bug修复的部分

KevinClair commented 1 year ago

可以参考一下我的commit里边关于bug修复的部分

除了你修复的部分外DefaultNode这个类的596行也需要修复,会报类型转换失败。

RvoteResult response = (RvoteResult) future.get(3000, MILLISECONDS);
leakey0626 commented 1 year ago

可以参考一下我的commit里边关于bug修复的部分

除了你修复的部分外DefaultNode这个类的596行也需要修复,会报类型转换失败。

RvoteResult response = (RvoteResult) future.get(3000, MILLISECONDS);

我测的时候不会报这个错,你可以把报错信息放上来吗?

KevinClair commented 1 year ago

可以参考一下我的commit里边关于bug修复的部分

除了你修复的部分外DefaultNode这个类的596行也需要修复,会报类型转换失败。

RvoteResult response = (RvoteResult) future.get(3000, MILLISECONDS);

我测的时候不会报这个错,你可以把报错信息放上来吗?

就是ClassCastException。

leakey0626 commented 1 year ago

可以说一下复现的步骤,还有贴一下报错的截图吗

xyy9949 commented 1 year ago

一样的问题