class TopologyTimestampPlusEpsilonTracker extends NamedLogging with TimeAwaiter
Compute and synchronise the effective timestamps
Transaction validation and processing depends on the topology state at the given sequencer time. Therefore, we would have to inspect every event first if there is a topology state and wait until all the topology processing has finished before evaluation the transaction. This would be slow and sequential.
Therefore, we future date our topology transactions with an "effective time", computed from the sequencerTime + domainParameters.topologyChangeDelay.
However, the domainParameters can change and so can the topologyChangeDelay. Therefore we need to be a bit careful when computing the effective time and track the changes to the topologyChangeDelay parameter accordingly.
This class (hopefully) takes care of this logic
- Alphabetic
- By Inheritance
- TopologyTimestampPlusEpsilonTracker
- TimeAwaiter
- NamedLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new TopologyTimestampPlusEpsilonTracker(loggerFactory: NamedLoggerFactory)
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
- def adjustEpsilon(effectiveTime: EffectiveTime, sequencingTime: SequencedTime, epsilon: NonNegativeFiniteDuration)(implicit traceContext: TraceContext): Option[NonNegativeFiniteDuration]
adjust epsilon if it changed
adjust epsilon if it changed
- returns
None if epsilon is unchanged, otherwise we return the previous epsilon
- def adjustTimestampForTick(sequencingTime: SequencedTime)(implicit traceContext: TraceContext, executionContext: ExecutionContext): Future[EffectiveTime]
- def adjustTimestampForUpdate(sequencingTime: SequencedTime)(implicit traceContext: TraceContext, executionContext: ExecutionContext): Future[EffectiveTime]
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def awaitKnownTimestamp(timestamp: CantonTimestamp): Option[Future[Unit]]
- Attributes
- protected
- Definition Classes
- TimeAwaiter
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def currentKnownTime: CantonTimestamp
- Attributes
- protected
- Definition Classes
- TopologyTimestampPlusEpsilonTracker → TimeAwaiter
- def effectiveTimeProcessed(effectiveTime: EffectiveTime): Unit
- 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
- @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
- TopologyTimestampPlusEpsilonTracker → NamedLogging
- implicit def loggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- 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 notifyAwaitedFutures(upToInclusive: CantonTimestamp): Unit
- Attributes
- protected
- Definition Classes
- TimeAwaiter
- 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])