-
Type: Task
-
Resolution: Gone away
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
-
Sharding NYC 2022-04-18, Sharding 2022-05-02
The internal transaction API assumes its transactions will succeed and will automatically attempt to commit if no errors are thrown, or abort if an exception is returned. If the transaction expects to hit some errors and wants to handle them specially, it can be difficult to disable the automatic commits/aborts which can throw errors that might swallow the expected error or trigger a transient transaction error retry. There's a similar issue with unyielding a ResourceYielder throwing an error if the underlying transaction aborted, which can also mask the original error.
The API should be improved to handle this use case more gracefully.