David Ribeiro Alves has posted comments on this change. Change subject: Add a design doc for rpc retry/failover semantics ......................................................................
Patch Set 4: (1 comment) http://gerrit.cloudera.org:8080/#/c/2642/4/docs/design-docs/rpc-retry-and-failover.md File docs/design-docs/rpc-retry-and-failover.md: Line 119: each client request is : recorded by the consensus log almost as is so it wouldn't be problematic to additionally store : the client id and request seq no. so when a write is "consensus committed" all future handlers : of that write (future leaders) will automatically be able to identify the client and request > Thanks, I was reading via email and so I missed your response to the genera I think you raise a good point regarding splitting the handled errors but that is very specific to each RPC whereas this is more of a generic design doc. The replay cache for Writes() should only cache stuff that is in the wal so the client should still do some ad-hoc filtering of what it can retry and what it can't. | If the seqno is auto-assigned by the client library, then in the case of a partial timeout, how can we manually retry inserts with the same seqno? Regarding results. That depends on the operation. For Writes() the result of applying a WriteRequest is always guaranteed to be the same across replicas even across reboots, which is why we don't need to store them I don't see a problem in the case you described: The client creates a seqno for the write. Tries it on the first leader (which succeeds) but gets a retriable (network) error back. Tries it on the second leader with the same seqno but which timesout (again network error) Tries it back on the first leader still with the same seqno that that supposedly already has the result cached (since it rebooted as was elected leader in your scenario). -- To view, visit http://gerrit.cloudera.org:8080/2642 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Idc2aa40486153b39724e1c9bd09c626b829274c6 Gerrit-PatchSet: 4 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: David Ribeiro Alves <[email protected]> Gerrit-Reviewer: Adar Dembo <[email protected]> Gerrit-Reviewer: Dan Burkert <[email protected]> Gerrit-Reviewer: David Ribeiro Alves <[email protected]> Gerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy <[email protected]> Gerrit-Reviewer: Todd Lipcon <[email protected]> Gerrit-HasComments: Yes
