Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-10133

Consider retry on rollback for more cursor API calls

    • v6.2, v6.1, v6.0

      Currently, if we're not in a transaction, and we do a WT_CURSOR->insert, or any one of several modifying cursor APIs, a transaction will be created (in __wt_txn_autocommit_check). At the end of the API call, if there is one of these "autocommit" transactions and a rollback error has occurred, the transaction is rolled back and the entire API call is redone. Note that the checking and retries occur in TXN_API_END (called via CURSOR_UPDATE_API).  It's pretty nifty, the application gets retries for free.

      However, we now have the possibility that simple read operations like WT_CURSOR->search can return WT_ROLLBACK due to an unfortunate collision with eviction. I think there has been various fallout that we've corrected by adding application retries. But maybe we should use the same philosophy that we're currently using for modifiable operations, to have a retry of an API operation that fails due to rollback.

            donald.anderson@mongodb.com Donald Anderson
            donald.anderson@mongodb.com Donald Anderson
            0 Vote for this issue
            4 Start watching this issue