kragniz / kragniz/python-etcd3

Exception when many threads wait to acquire etcd3 lock

未关闭
#369 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
450
派生
194
PR 合并指标
30 天内没有已合并 PR

描述

When 10 threads wait to acquire the etcd3 lock, I see this exception sometimes:

```
with etcd_client.lock("etcd_lock"):
File "/usr/local/lib/python2.7/dist-packages/etcd3/locks.py", line 136, in __enter__
self.acquire()
File "/usr/local/lib/python2.7/dist-packages/etcd3/locks.py", line 103, in acquire
return _acquire()
File "/usr/local/lib/python2.7/dist-packages/tenacity/__init__.py", line 231, in wrapped_f
return self.call(f, *args, **kw)
File "/usr/local/lib/python2.7/dist-packages/tenacity/__init__.py", line 313, in call
start_time=start_time)
File "/usr/local/lib/python2.7/dist-packages/tenacity/__init__.py", line 269, in iter
return fut.result()
File "/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py", line 455, in result
return self.__get_result()
File "/usr/local/lib/python2.7/dist-packages/tenacity/__init__.py", line 316, in call
result = fn(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/etcd3/locks.py", line 83, in _acquire
self.lease = self.etcd_client.lease(self.ttl)
File "/usr/local/lib/python2.7/dist-packages/etcd3/client.py", line 48, in handler
_translate_exception(exc)
File "/usr/local/lib/python2.7/dist-packages/etcd3/client.py", line 32, in _translate_exception
raise exception
ConnectionFailedError
```

贡献指南

打开贡献指南

调研方向

从报告的 10 线程复现开始,检查 etcd3/locks.py,尤其是 acquire 和 _acquire,然后跟踪 etcd3/client.py 中的异常转换。确定等待中的线程为何会引发 ConnectionFailedError,并验证并发锁场景不再产生报告中的异常。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
distributed-systems
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。