dubbo: AbstractRegistry lock problem

环境:

  • suse linux
  • dubbo 2.5.3

dubbo启动时会报:

2014-08-29 19:13:52,325 WARN  com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.doSaveProperties:221 -  [DUBBO] Failed to save registry store file, cause: Can not lock the registry cache file /uniiof/tstusers/tstweg02/.dubbo/dubbo-registry-133.0.192.193.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties, dubbo version: 2.5.3, current host: 127.0.0.1
java.io.IOException: Can not lock the registry cache file /uniiof/tstusers/tstweg02/.dubbo/dubbo-registry-133.0.192.193.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties
    at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:193)
    at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:150)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

从异常看,是多个线程都要写信息,导致不能获取锁,同时也不尝试再次获取

About this issue

  • Original URL
  • State: closed
  • Created 10 years ago
  • Comments: 15

Most upvoted comments

@dudi123456 @Xiaobaxi 解决了,出现这个的原因是服务向ZK注册的同时,会缓存Consumer的列表,写入user.home/.dubbo/dubbo-registry-" + url.getHost() + ".cache 这个文件,当在同一个机器上启动多个Provider的时候,就会出现文件锁争用的问题,报上面这个错误。解决办法:服务模块各自缓存自己的cache文件,在<dubbo:registry />中加入 file=“dubboregistry/dubbo-registry.properties” ,这样就会在bin目录下生成dubboregistry这个目录,cache文件就缓存在这个里边了。