When using the DCP client and applying back-pressure via the event handler, the SDK is intended to continue processing incoming packets as expected with dcp ack being used to apply back-pressure to the server.
Unfortunately the current implementation does not actually do this, it starts up threads for handling DCP packets, correctly hands off packets to those threads, but the queue between it is 1:1 which means that the threads block each-other anyways. This leads to a case where config updates and other requests (such as further OpenStream messages) can be blocked waiting behind DCP events which are intentionally being held back by the application for back-pressure reasons.
|For Gerrit Dashboard: GOCBC-984|
|135469,7||GOCBC-984: Fixed DCP backpressure to not block the client.||master||gocbcore||Status: MERGED||+2||+1|
|135581,2||MB-41144: Bump up gocbcore version for GOCBC-984||master||cbgt||Status: MERGED||+2||+1|
|136292,3||GOCBC-984: Fixed DCP backpressure to not block the client.||v7||gocbcore||Status: MERGED||+2||+1|
|136318,2||Bumping up to gocbcore/v9.0.6 in master, CC manifests||master||manifest||Status: MERGED||+2||+1|
|138470,4||Update agent_diag.go||master||gocbcore||Status: ABANDONED||-1||0|