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
