foundationdb
foundationdb copied to clipboard
client_buggify can cause commit_unknown_result_fatal
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_resultis 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:
- Move the client buggify error codes associated with the grv proxy into
getReadVersion, where they probably belong anyway. - 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_resultfor handling a successful commit.
This should make it safe to assume that the read version is set before determineCommitStatus (correcting the underlying problem)