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

Reply via email to