com.digitalasset.canton.participant.protocol
Phase37Synchronizer
Companion object Phase37Synchronizer
class Phase37Synchronizer extends NamedLogging
Synchronizes the request processing of phases 3 and 7. At the end of phase 3, every request must signal that it has reached com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Confirmed via markConfirmed or markTimeout. At the beginning of phase 7, requests can wait on the completion of phase 3 via awaitConfirmed.
Eventually, all requests above initRc
should signal via markConfirmed or skipRequestCounter.
Otherwise, the synchronizer becomes a memory leak.
This class assumes that the timestamps in request IDs grow strictly with the non-skipped request counters.
- Alphabetic
- By Inheritance
- Phase37Synchronizer
- NamedLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Phase37Synchronizer(initRc: RequestCounter, loggerFactory: NamedLoggerFactory)
- initRc
The request counter of the first request to synchronize.
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 awaitConfirmed(requestId: RequestId, requestType: RequestType)(implicit traceContext: TraceContext): Future[Option[PendingRequestDataOrReplayData[PendingRequestData]]]
The returned future completes after the given request has reached com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Confirmed.
- def cleanOnTimeout(requestId: RequestId)(implicit traceContext: TraceContext): Unit
Clean internal data after the request has been inserted with markTimeout.
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- val loggerFactory: NamedLoggerFactory
- Definition Classes
- Phase37Synchronizer → NamedLogging
- def markConfirmed(requestType: RequestType)(requestCounter: RequestCounter, requestId: RequestId, requestData: PendingRequestDataOrReplayData[PendingRequestData])(implicit traceContext: TraceContext): Unit
Marks the given request as having reached com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Confirmed.
Marks the given request as having reached com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Confirmed.
- Exceptions thrown
- If the maximum request counter Long.MaxValue is used
- If the same request counter was marked with a different timestamp or skipped
and not all requests since the initial request counter
initRc
have been marked as confirmed or skipped. - If the same request was marked with different requestData or indicated as timed out.
- def markTimeout(requestCounter: RequestCounter, requestId: RequestId)(implicit traceContext: TraceContext): Unit
Marks the given request as having timeout
Marks the given request as having timeout
- Exceptions thrown
- If the maximum request counter Long.MaxValue is used
- If the same request counter was marked with a different timestamp or skipped
and not all requests since the initial request counter
initRc
have been marked as confirmed or skipped. - If the same request was marked as confirmed.
- implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def noTracingLogger: Logger
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def skipRequestCounter(requestCounter: RequestCounter)(implicit traceContext: TraceContext): Unit
Skips the given request counter without specifying a timestamp.
Skips the given request counter without specifying a timestamp.
- Exceptions thrown
- If the maximum request counter Long.MaxValue is used
- If the same request counter was marked as confirmed
and not all requests since the initial request counter
initRc
have been marked as confirmed or skipped.
- 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])