New client sends queue: false check out request to Connection
Connection receives check out but it think old client still holds socket so replies with error
Old client sends check in to Connection
Connection receives check in
Similar can happen on disconnect check in with queue: false but that is likely desired as connection not immediately available. However if queue: true:
Old client sends check in to poolboy
Poolboy receives check in and assign new client
New client sends queue check out request to Connection
Connection receives check out and queues request
Old client sends disconnect to Connection
Connection sends error to queue and disconnects/connects
However if we the old client sends disconnect to Connection before checking in to poolboy (not current behaviour) the disconnect/connect would always arrive before the new client checkout. This means the new client would always be blocked waiting for the connection, which may or may not succeed.
During client check in:
Similar can happen on disconnect check in with
queue: false
but that is likely desired as connection not immediately available. However ifqueue: true
:However if we the old client sends disconnect to Connection before checking in to poolboy (not current behaviour) the disconnect/connect would always arrive before the new client checkout. This means the new client would always be blocked waiting for the connection, which may or may not succeed.