Poller.Remove() doesn't actually remove the given socket from the underlying czmq poller, it just removes it from the slice of golang objects wrapping sockets. While I can't explain the exact reason behind it, this is causing weird behavior when sockets are removed from the poller (at the golang level), the sockets are destroyed, and then new sockets are added to the poller. In these cases the poller never notices new reads pending on the new sockets
Poller.Remove()
doesn't actually remove the given socket from the underlying czmq poller, it just removes it from the slice of golang objects wrapping sockets. While I can't explain the exact reason behind it, this is causing weird behavior when sockets are removed from the poller (at the golang level), the sockets are destroyed, and then new sockets are added to the poller. In these cases the poller never notices new reads pending on the new sockets