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
- Alphabetic
- By Inheritance
- Branch
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- 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.
- 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.
- 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
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)