[DUBBO] Failed to save registry cache file, will retry, cause: null

[DUBBO] Failed to save registry cache file, will retry, cause: null

问题:

springboot项目启动dubbo服务时,出现以下报错日志(但不影响启动)

[DUBBO] Failed to save registry cache file, will retry, cause: null, dubbo version: 3.0.7, current host x.x.x.x

java.nio.channels.OverlappingFileLockException: null
	at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255) ~[na:1.8.0_221]
	at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152) ~[na:1.8.0_221]
	at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1107) ~[na:1.8.0_221]
	at java.nio.channels.FileChannel.tryLock(FileChannel.java:1155) ~[na:1.8.0_221]
	at org.apache.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:192) ~[dubbo-3.0.7.jar:3.0.7]
	at org.apache.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:585) [dubbo-3.0.7.jar:3.0.7]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_221]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_221]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_221]

分析

网上搜索,说是
Dubbo 服务向 ZK 注册的同时,会本地缓存服务列表,写入user.home/.dubbo/dubbo-registry-” + url.getHost() + “.cache 这个文件(Windows默认是写到当前用户文件夹下的.dubbo文件夹),当在同一个机器上启动多个Provider的时候,就会出现文件锁争用的问题,报上面这个错误。

但是我疑惑的是,我只是启动一个服务而已,不属于这种情况啊。后面去本地.dubbo文件夹查看dubbo-registry-**.cache文件,竟然发现一个确实有一个不属于当前启动服务的服务名称。
于是在项目中搜索这个类,原来是另一个模块的dubbo服务提供者。

所以大概猜到问题了,由于这个项目是由2个模块组成,包名也相同,当初是因为项目公用一套数据库实体类,为了方便就把2个系统的代码写在一个项目中,我猜想上面的报错是因为一个模块中依赖注入 (使用的@DubboReference)引用了另一个模块的服务类,导致扫描到了另一个模块的服务提供者。
于是我尝试把@DubboReference注解去掉后再启动,果然没有报错了。

总结

虽然本地会报这个错误,但不影响使用,实际部署是不会的,因为打包的时候其实代码是已经自动拆分好的了,自然也就不会有这种情况。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值