Reading through the write path, it seems to me that
RSRpcServices#doBatchOp(RegionActionResult.Builder,HRegion,List<Action>
mutations,CellScanner) should be honoring a nonce if present. The reason
being: if a client sends some Puts without specifying a TS, it relies on
the RS to provide one. Should such an operation succeed on the server but
the ACK not reach the client, client may resend the operation, silently
inserting more cells than intended. Deletes may well be a more sinister
issue, removing more cells than intended.

I've not yet written a test to confirm this.

There was conversation around the implementation of nonces discussing
options for removing the coupling of TS to clock-on-the-wall time. Sergey
describes the current situation quite eloquently: "server-generated TS
provide illusion of consistency guarantees which is not there by any
means". A fix for this will likely subtly break the semantics of our data
coordinates, and so should be addressed with 1.0, perhaps along side a
revamped client-side API.

-n

Reply via email to