As documented offline, Pub/Sub streamingPull may result in a high duplicate rate because the server terminates a streamingPull connection by sending a signal down the stream. This signal is delivered to the client after the messages already in the stream buffer are processed. As a result, the client may send acks and modifyAckDeadline's up a stream that has already been broken, leading to their loss.
To close this bug:
- Agree on a mitigation strategy. Currently, it is to send acks and modifyAckDeadline's as separate requests (synchronous or streaming?)
- Implement in Java.
- Validate that the implementation does not lead to performance degradation or extreme delays in ack and modAck delivery to the server, which would again lead to high rate of duplication.
- Reproduce in other clients.
This is GA launch blocking.