Packages

trait Branch[F[_], TID, Q, R] extends AnyRef

A branch defines behavior for the various phases of the 2PC protocol for a certain transaction type. The branch is responsible for preparing, committing and aborting the transaction. The coordinator instantiates a branch for each transaction and branch ID.

F

the effect type

TID

the transaction identifier type

Q

the query type

R

the abort reason type

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Branch
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def abort(id: TID, reason: AbortReason[R]): F[Unit]

    Abort the transaction branch.

    Abort the transaction branch. This is the second step in the 2PC protocol, in case of preparation timeout or any branch voting to abort.

    id

    transaction id

    reason

    the reason for the abort

    Note

    all branches are expected to abort at this point, failure could lead to local inconsistency. It's up to the branch to organize retries if necessary.

    ,

    this operation is expected to be idempotent, as it may be retried by the coordinator.

    ,

    an exception raised here transitions the transaction to failed state (once all branches return).

    ,

    as for prepare, there is no intrinsic limitation in the duration this operation may take. A confirmation is expected by the coordinator at some point to transition the transaction to aborted, however.

  2. abstract def commit(id: TID): F[Unit]

    Commit the transaction branch.

    Commit the transaction branch. This is the second step in the 2PC protocol.

    id

    transaction id

    Note

    this operation should in principle not fail, all branches are expected to commit at this point to ensure consistency. It's up to the branch to organize retries if necessary.

    ,

    this operation is expected to be idempotent, as it may be retried by the coordinator.

    ,

    an exception raised here transitions the transaction to a failed state (once all branches return).

    ,

    as for prepare, there is no intrinsic limitation in the duration this operation may take. A confirmation is expected by the coordinator at some point to transition the transaction to committed, however.

  3. abstract def prepare(id: TID, query: Q): F[Vote[R]]

    Prepare the branch for a transaction.

    Prepare the branch for a transaction. This is the first step in the 2PC protocol.

    id

    transaction id

    query

    payload relevant for transaction execution

    returns

    vote on whether the transaction should be committed or aborted

    Note

    this operation supports an optional timeout (this is tracked by the coordinator), in which case the transaction will be aborted. However, there is no intrinsic limitation in the duration this operation may take. It could span days, as long as it returns a vote at some point and the coordinator is still alive.

    ,

    this operation is expected to be idempotent, as it may be retried by the coordinator.

    ,

    an exception raised here transitions the transaction to failed state (once all branches * return).

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  10. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  14. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  15. def toString(): String
    Definition Classes
    AnyRef → Any
  16. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  17. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from AnyRef

Inherited from Any

Ungrouped