Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AbstractRegistry lock problem #81

Closed
dudi123456 opened this issue Aug 29, 2014 · 15 comments

Comments

@dudi123456
Copy link

commented Aug 29, 2014

环境:

  • 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)

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

@justein

This comment has been minimized.

Copy link

commented Apr 13, 2016

我也遇到了这个问题,请问你解决了么?

@Xiaobaxi

This comment has been minimized.

Copy link

commented Apr 13, 2016

这个只是个warn,但是我们项目中有时候也会碰到这个问题,但是之后再启动,就不会有这个问题,如果可以解决当然是最好了 @dudi123456 @justein

@justein

This comment has been minimized.

Copy link

commented Apr 15, 2016

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

@501956430

This comment has been minimized.

Copy link

commented Jul 29, 2016

@justein
您好,我也遇到这个的问题,有幸能看到你提供的解决方案,不过有一个地方不太明白:
服务模块各自缓存自己的cache文件,在中加入 file="dubboregistry/dubbo-registry.properties"
不太明白这个配置应该加入在哪里?
期待您的解答,谢谢了。

@justein

This comment has been minimized.

Copy link

commented Jul 29, 2016

@501956430 加在你的provider的xml配置里,<dubbo:registry protocol="zookeeper" address="IP:2181" timeout="2000" file="dubboregistry/dubbo-registry.properties"/>

@changwei0708

This comment has been minimized.

Copy link

commented Aug 26, 2016

之前在开源中国看到一篇文章,也是很多关于dubbo实际使用的问题和解决方案
《DUBBO 使用问题记录》

@zouchunhui

This comment has been minimized.

Copy link

commented Feb 22, 2017

备注一下。

@moxingwang

This comment has been minimized.

Copy link

commented Mar 10, 2017

备注一下

@wlccomeon

This comment has been minimized.

Copy link

commented Aug 17, 2017

备注一下,多谢指导。

@qinliujie qinliujie closed this Oct 16, 2017

@lizhixin1992

This comment has been minimized.

Copy link

commented Nov 15, 2017

备注一下

@maczhao

This comment has been minimized.

Copy link

commented Dec 27, 2017

mark

@Julvae

This comment has been minimized.

Copy link

commented Jun 10, 2018

consumer 中的.cache文件内容存的是什么啊,如果是生产者信息的话,为什么我三台主机,部署一个zookeeper集群,一个dubbo集群,一个消费者集群,结果每个消费者的.cache文件中只是记录了本机提供的服务啊。

@lawliethaoge

This comment has been minimized.

Copy link

commented Sep 19, 2018

可以,完美解决

@yekui

This comment has been minimized.

Copy link

commented Oct 22, 2018

2018-10-15 22:55:24,780 WARN [DubboSaveRegistryCache-thread-1] c.a.d.c.u.DubboLogger - [DUBBO] Failed to save registry store file, cause: null, dubbo version: 3.2.0, current host: xxx
java.nio.channels.OverlappingFileLockException: null
at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1108)
at java.nio.channels.FileChannel.tryLock(FileChannel.java:1155)
at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:187)
at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:146)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

这个也是由于多进程导致嘛?

@yekui

This comment has been minimized.

Copy link

commented Oct 22, 2018

2018-10-15 22:55:24,780 WARN [DubboSaveRegistryCache-thread-1] c.a.d.c.u.DubboLogger - [DUBBO] Failed to save registry store file, cause: null, dubbo version: 3.2.0, current host: xxx
java.nio.channels.OverlappingFileLockException: null
at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1108)
at java.nio.channels.FileChannel.tryLock(FileChannel.java:1155)
at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:187)
at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:146)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

这个应该不是多进程并发导致的吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
You can’t perform that action at this time.