[ https://issues.apache.org/jira/browse/ZOOKEEPER-763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12864517#action_12864517 ]
Patrick Hunt commented on ZOOKEEPER-763: ---------------------------------------- This addressed the problem on my machine (ubuntu karmic) > Deadlock on close w/ zkpython / c client > ---------------------------------------- > > Key: ZOOKEEPER-763 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-763 > Project: Zookeeper > Issue Type: Bug > Components: contrib-bindings > Affects Versions: 3.3.0 > Environment: ubuntu 10.04, zookeeper 3.3.0 and trunk > Reporter: Kapil Thangavelu > Assignee: Henry Robinson > Fix For: 3.3.1, 3.4.0 > > Attachments: deadlock.py, deadlock_v2.py, stack-trace-deadlock.txt, > ZOOKEEPER-763.patch, ZOOKEEPER-763.patch > > > deadlocks occur if we attempt to close a handle while there are any > outstanding async requests (aget, acreate, etc). Normally on close both the > io thread terminates and the completion thread are terminated and joined, > however w\ith outstanding async requests, the completion thread won't be in a > joinable state, and we effectively hang when the main thread does the join. > afaics ideal behavior would be on close of a handle, to effectively clear out > any remaining callbacks and let the completion thread terminate. > i've tried adding some bookkeeping to within a python client to guard against > closing while there is an outstanding async completion request, but its an > imperfect solution since even after the python callback is executed there is > still a window for deadlock before the completion thread finishes the > callback. > a simple example to reproduce the deadlock is attached. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.