kragniz / kragniz/python-etcd3
Exception when many threads wait to acquire etcd3 lock
- 主要语言
- 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