foundationdb icon indicating copy to clipboard operation
foundationdb copied to clipboard

client_buggify can cause commit_unknown_result_fatal

Open atn34 opened this issue 2 years ago • 0 comments

commit_unknown_result_fatal should not be thrown by client buggify since retry loops aren't expected to handle it.

This can happen under the following conditions:

  • The transaction has automatic idempotency enabled
  • The transaction does not perform any reads
  • commit_unknown_result is thrown from https://github.com/apple/foundationdb/blob/8878de8c8f06ab7557b5edf40ffe6ae50a35ac19/fdbclient/NativeAPI.actor.cpp#L6603
  • ~~No idempotency ids have ever been expired due to their age~~ (not necessary)

Proposal:

  1. Move the client buggify error codes associated with the grv proxy into getReadVersion, where they probably belong anyway.
  2. Move the client buggify error codes associated with the commit proxy to directly before the commit rpc is made. Keep the potential buggify of commit_unknown_result for handling a successful commit.

This should make it safe to assume that the read version is set before determineCommitStatus (correcting the underlying problem)

atn34 avatar May 23 '23 00:05 atn34