Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-4176

Forcing a commit via recovery RecoveryAdminOperations may create a duplicate GlobalTransaction

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • 6.0.2.Final
    • Core, Transactions
    • None

      RecoveryManagerImpl.forceTransactionCompletion() modifies the GlobalTransaction.address of the transaction being committed so that the local node is the originator. But the GlobalTransaction.id stays the same, we could have two transactions with the same GlobalTransaction - which shouldn't be possible.

      We can't remove the code that changes the GlobalTransaction.address, because we use it as the originator in other parts of the code. So the only option is to generate a new id as well.

      But there is another problem: RecoveryAwareTransactionTable.cleanupStaleTransactions() doesn't release the locks acquired by that transaction on the primary node. So forcing a commit with a different GlobalTransaction will not be able to acquire the locks that were held by the original transaction.

            pruivo@redhat.com Pedro Ruivo
            dberinde@redhat.com Dan Berindei (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: