搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
交流区
›
技术交流
›
ZooKeeper
›
zookeeper c++客户端 锁zoolock失效
0
4
0
分享
zookeeper c++客户端 锁zoolock失效
wenmang168
发表于 2013-10-16 13:41:05
[显示全部楼层]
阅读模式
关闭右栏
4
12134
About云VIP帮助找工作和提升
最近在用zoolock 实现分布式锁,在多线程模式下,锁释放后,有的时候会出现其他线程获取不到锁
我的代码大概实现是,
线程中的逻辑:
用zkr_lock_lock锁,然后用zkr_lock_isowner判断释放锁成功
锁成功后,再释放锁zkr_lock_unlock
但是我在3个线程的情况下,经常会出现,线程A锁成功,线程B,C都在等锁,但是在线程A释放锁后,会出现线程B,线程C都获取不到锁。
请高手指教。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(4)人评论
电梯直达
正序浏览
wenmang168
发表于 2013-10-16 13:42:04
请各位大侠指教
回复
使用道具
举报
显身卡
benhu218
发表于 2013-10-16 13:43:04
用的是zookeeper源码中的zookeeper/src/recipes/lock吗?
应该没问题啊
回复
使用道具
举报
显身卡
zhang691753540
发表于 2013-10-16 13:43:59
我也遇到过这样的情况,查看它的源码,它注册的回调也是zkr_lock这个函数,可以尝试在多次获取不到锁的时候再次进行加锁调用(毕竟zookeeper自己注册的回调也是再次加锁操作)
回复
使用道具
举报
显身卡
zhang691753540
发表于 2013-10-16 13:44:30
引用 3 楼 zhang691753540 的回复:
我也遇到过这样的情况,查看它的源码,它注册的回调也是zkr_lock这个函数,可以尝试在多次获取不到锁的时候再次进行加锁调用(毕竟zookeeper自己注册的回调也是再次加锁操作)
当时遇到这个问题,就用上述方法搞定了。后来看了一下它的实现,由于实现中是首先创建一个临时节点然后再去注册上个节点的回调,我猜测这中间的时序问题,即节点建立与节点回调注册的不确定性,当然上述死锁比较难以重现,所以只是猜测,没有什么根据
第二种的可能就是注册上个节点的退出观察失败,然后本线程中存在了死锁导致整个分布式锁死锁现象,这种可以在代码中验证并且是zookeeper给出锁的例子的bug吧。zookeeper使用版本为3.4.3
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
wenmang168
新手上路
关注
主题
帖子
粉丝
TA的主题
zookeeper c++客户端 锁zoolock失效
2013-10-16
24小时热文
数据治理解决方案
数据治理系统实施方案
大龄失业后,这些副业路子都是被割韭菜
性格决定命运是谎言,这才真正决定命运
元数据管理与标准
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈