Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
-
1
-
SDK36
Description
When gocb.Connect is called we create a "global agent", when .Bucket is called we shutdown the global agent and create a bucket bound agent. If .Bucket is called immediately after .Connect this can cause a race in the global agent where Stop is called on the poller controller before it has fully started up.
For a global level agent we do not run HTTP polling. In Run we assign the active controller to cccp, release the lock, and then call runSinglePoller. If Stop is called whilst this happens then Stop sits waiting for the lock, once obtained it gets the active poller and calls Stop on it. In between the Run loop releasing the lock and then re-obtaining it in runSinglePoller, Stop has called Stop on the poller which means that it indefinitely sits waiting for a channel to close.
Attachments
Gerrit Reviews
For Gerrit Dashboard: GOCBC-1471 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
196652,3 | GOCBC-1471: Rework how pollers are stopped | master | gocbcore | Status: MERGED | +2 | +1 |