This repository has been archived by the owner on Dec 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Unblock read acks pump from inputhost (#17)
* Unblock read acks pump from inputhost If the server is draining gracefully, then the server will send a DRAIN command. The DRAIN command used to simply stop the write pump and wait for the server to close the stream. Even though server successfully will close the stream after finishing the DRAIN, the readAcks pump will never see the EOF because we don't do a stream.Read() unless we have some messages inflight. This patch tries to solve that by waiting for a default of a minute and explicitly closing the connection. In addition this patch also adds some additional logs and metrics to make sure we can track retries and failures on publish. 1. We need to make sure if we are already closing/draining we shouldn't close the connection. This is critical because during reconfig we could decide to close the connection but in the meanwhile we could have received a drain command and started draining. In that case we should just allow the drain process to take care of the rest. 2. Instead of waiting for the entire timeout period, we can ideally just check for the number of responses we received and bail out immediately. Fix connection close to make sure we always wait for sometime to give a chance to drain. We can avoid using the atomic variables for closed and we can just rely on the shutting down channel to make sure we close is idempotent. * Make sure we wait for the final drain timeout If the checkDrainTimer fires, we exit immediately even if the drain has not finished yet. But we should wait for the bigger timeout as well.
- Loading branch information
aravindvs
authored
Apr 13, 2017
1 parent
de07d3a
commit 342225e
Showing
4 changed files
with
135 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters