Uploaded image for project: 'Phoenix Tephra'
  1. Phoenix Tephra
  2. TEPHRA-90

Make canCommit call optional in transaction lifecycle

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Critical
    • Resolution: Unresolved
    • None
    • None
    • client, core

    Description

      Currently the canCommit RPC call in required in the transaction lifecycle before a transaction commits. This sends the transaction's change set (which the transaction manager then keeps in memory). The idea behind the canCommit call is that it allows a client which buffers writes in memory to avoid rollback, when a conflict is detected at canCommit time. However, it is still possible that a conflict will occur between the canCommit and commit calls, so rollback will still be required.

      This is unnecessary overhead for clients which do not perform in-memory buffering. In this case, requiring the call to canCommit adds an extra RPC (and extra append to the TransactionService WAL) to every transaction. We should make the call to canCommit optional, so that clients not requiring it can achieve higher throughput.

      Attachments

        Activity

          People

            ghelmling Gary Helmling
            ghelmling Gary Helmling
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: