Anthony-Dong opened a new issue #2667: URL: https://github.com/apache/rocketmq/issues/2667
software version: rocket-mq 4.8.0 java code version: rocket-mq 4.8.0 部署模式:DLeger模式 1broker3node 2name-server broker机器的日志一直抛出 下面的Error异常 ```shell ### ... 2021-02-07 17:10:55 INFO main - enableDLegerCommitLog=true 2021-02-07 17:10:55 INFO main - dLegerGroup=RaftNode00 2021-02-07 17:10:55 INFO main - dLegerPeers=n0-broker-01:40911;n1-broker-02:40911;n2-broker-03:40911 ### ... 2021-02-07 17:10:55 INFO main - storePathCommitLog=/root/store/commitlog ### ... 2021-02-07 17:10:59 INFO main - Try to start service thread:PullRequestHoldService started:false lastThread:null 2021-02-07 17:10:59 INFO FileWatchService - FileWatchService service started 2021-02-07 17:10:59 INFO PullRequestHoldService - PullRequestHoldService service started 2021-02-07 17:10:59 INFO main - The broker[RaftNode00, 172.15.64.10:10913] boot success. serializeType=JSON and name server is nameserver-01:9876;nameserver-02:9876 2021-02-07 17:11:00 ERROR DiskCheckScheduledThread1 - Error when measuring disk space usage, file doesn't exist on this path: /root/store/commitlog ### .... 2021-02-07 17:13:09 INFO brokerOutApi_thread_1 - register broker[0]to name server nameserver-01:9876 OK 2021-02-07 17:13:09 INFO brokerOutApi_thread_2 - register broker[0]to name server nameserver-02:9876 OK 2021-02-07 17:13:10 ERROR DiskCheckScheduledThread1 - Error when measuring disk space usage, file doesn't exist on this path: /root/store/commitlog 2021-02-07 17:13:20 ERROR DiskCheckScheduledThread1 - Error when measuring disk space usage, file doesn't exist on this path: /root/store/commitlog 2021-02-07 17:13:30 ERROR DiskCheckScheduledThread1 - Error when measuring disk space usage, file doesn't exist on this path: /root/store/commitlog ``` 看了看源码问题是没有兼容DLeger模式,不知道影响在哪 [org.apache.rocketmq.store.DefaultMessageStore#diskCheckScheduledExecutorService](https://github.com/apache/rocketmq/blob/release-4.8.0/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java#L1346) ```java this.diskCheckScheduledExecutorService.scheduleAtFixedRate(new Runnable() { public void run() { DefaultMessageStore.this.cleanCommitLogService.isSpaceFull(); } }, 1000L, 10000L, TimeUnit.MILLISECONDS); ``` 这里的#isSpaceFull 方法 ```java public boolean isSpaceFull() { // 直接获取默认的getStorePathCommitLog日志,导致调用getDiskPartitionSpaceUsedPercent异常日志 String storePathPhysic = DefaultMessageStore.this.getMessageStoreConfig().getStorePathCommitLog(); double physicRatio = UtilAll.getDiskPartitionSpaceUsedPercent(storePathPhysic); } ``` 正确获取`storePathPhysic`是 ```java private String getStorePathPhysic() { String storePathPhysic = ""; if (DefaultMessageStore.this.getMessageStoreConfig().isEnableDLegerCommitLog()) { storePathPhysic = ((DLedgerCommitLog)DefaultMessageStore.this.getCommitLog()).getdLedgerServer().getdLedgerConfig().getDataStorePath(); } else { storePathPhysic = DefaultMessageStore.this.getMessageStoreConfig().getStorePathCommitLog(); } return storePathPhysic; } ``` 问题是: 这个方法的影响应该是检测磁盘的使用空间问题,获取分区内的空闲大小,影响是无法提示磁盘空间的占用情况。虽然现在机器都有磁盘监控报警,但是这块代码确实有问题。 其实对于新的 `DLeger`模式来说,这个配置是没有用的`storePathCommitLog=/root/store/commitlog` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
