Interface RecoveryManager

All Known Implementing Classes:

public interface RecoveryManager
RecoveryManager is the component responsible with managing recovery related information and the functionality associated with it. Refer to this document for details on the design of recovery.
  • Method Details

    • getPreparedTransactionsFromCluster

      RecoveryManager.RecoveryIterator getPreparedTransactionsFromCluster()
      Returns the list of transactions in prepared state from both local and remote cluster nodes. Implementation can take advantage of several optimisations:
      • in order to get all tx from the cluster a broadcast is performed. This can be performed only once (assuming the call is successful), the first time this method is called. After that a local, cached list of tx prepared on this node is returned.
      • during the broadcast just return the list of prepared transactions that are not originated on other active nodes of the cluster.
    • getInDoubtTransactionInfoFromCluster

      Set<InDoubtTxInfo> getInDoubtTransactionInfoFromCluster()
      Returns a Set containing all the in-doubt transactions from the cluster, including the local node. This does not include transactions that are prepared successfully and for which the originator is still in the cluster.
      See Also:
    • getInDoubtTransactionInfo

      Set<InDoubtTxInfo> getInDoubtTransactionInfo()
      Same as getInDoubtTransactionInfoFromCluster(), but only returns transactions from the local node.
    • removeRecoveryInformation

      CompletionStage<Void> removeRecoveryInformation(Collection<Address> where, XidImpl xid, GlobalTransaction gtx, boolean fromCluster)
      Removes from the specified nodes (or all nodes if the value of 'where' is null) the recovery information associated with these Xids.
      where - on which nodes should this be executed.
      xid - the list of xids to be removed.
      gtx - the global transaction
      fromCluster - true to remove the recovery information from all cluster.
    • removeRecoveryInformationFromCluster

      CompletionStage<Void> removeRecoveryInformationFromCluster(Collection<Address> where, long internalId)
      Same as removeRecoveryInformation(Collection, XidImpl, GlobalTransaction, boolean) but the transaction is identified by its internal id, and not by its xid.
    • getInDoubtTransactions

      List<XidImpl> getInDoubtTransactions()
      Local call that returns a list containing:
       - all the remote transactions prepared on this node for which the originator(i.e. the node where the tx
       stared) is no longer part of the cluster.
       - all the locally originated transactions which are prepared and for which the commit failed
      See Also:
    • getPreparedTransaction

      RecoveryAwareTransaction getPreparedTransaction(XidImpl xid)
      Local call returning the remote transaction identified by the supplied xid or null.
    • forceTransactionCompletion

      CompletionStage<String> forceTransactionCompletion(XidImpl xid, boolean commit)
      Replays the given transaction by re-running the prepare and commit. This call expects the transaction to exist on this node either as a local or remote transaction.
      xid - tx to commit or rollback
      commit - if true tx is committed, if false it is rolled back
    • forceTransactionCompletionFromCluster

      String forceTransactionCompletionFromCluster(XidImpl xid, Address where, boolean commit)
      This method invokes forceTransactionCompletion(XidImpl, boolean) on the specified node.
    • isTransactionPrepared

      boolean isTransactionPrepared(GlobalTransaction globalTx)
      Checks both internal state and transaction table's state for the given tx. If it finds it, returns true if tx is prepared.
    • removeRecoveryInformation

      RecoveryAwareTransaction removeRecoveryInformation(Long internalId)
      Same as removeRecoveryInformation(XidImpl) but identifies the tx by its internal id.
    • removeRecoveryInformation

      RecoveryAwareTransaction removeRecoveryInformation(XidImpl xid)
      Remove recovery information stored on this node (doesn't involve rpc).
      See Also:
    • registerInDoubtTransaction

      void registerInDoubtTransaction(RecoveryAwareRemoteTransaction tx)