trait ContractKeyJournal extends ConflictDetectionStore[LfGlobalKey, Status]
The contract key journal determines for each com.digitalasset.canton.protocol.LfGlobalKey whether it is considered to be allocated. The store is organized as a journal, indexed by timestamp and request counter, so that crash recovery can remove all changes due to dirty request before replay starts.
With unique contract key semantics and honest key maintainers, the allocation status reflects whether there is an active contract in the active contract store for the given key. However, if two or more contracts with the same key have been active, this correspondence no longer needs to hold. Then, the contract key journal has the authority over the allocation status of the key.
- Alphabetic
- By Inheritance
- ContractKeyJournal
- ConflictDetectionStore
- PrunableByTime
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def addKeyStateUpdates(updates: Map[LfGlobalKey, (Status, TimeOfChange)])(implicit traceContext: TraceContext): EitherT[Future, ContractKeyJournalError, Unit]
Writes the given updates as a journal entry to the store with the given time of change.
Writes the given updates as a journal entry to the store with the given time of change. The updates need not be written atomically and can be written partially in case of an error.
- returns
Returns com.digitalasset.canton.participant.store.ContractKeyJournal.ContractKeyJournalError if a different count with the same com.digitalasset.canton.participant.util.TimeOfChange has been written for one of the keys in the
updates
map.
- abstract def advancePruningTimestamp(phase: PruningPhase, timestamp: CantonTimestamp)(implicit traceContext: TraceContext): Future[Unit]
- Attributes
- protected[canton]
- Definition Classes
- PrunableByTime
- Annotations
- @VisibleForTesting()
- abstract def countUpdates(key: LfGlobalKey)(implicit traceContext: TraceContext): Future[Int]
Returns the number of stored updates for the given contract key.
Returns the number of stored updates for the given contract key.
- Annotations
- @VisibleForTesting()
- abstract def deleteSince(inclusive: TimeOfChange)(implicit traceContext: TraceContext): EitherT[Future, ContractKeyJournalError, Unit]
Deletes all journal entries whose time of change is at least
inclusive
.Deletes all journal entries whose time of change is at least
inclusive
. This operation need not execute atomically. - abstract def doPrune(beforeAndIncluding: CantonTimestamp, lastPruning: Option[CantonTimestamp])(implicit traceContext: TraceContext): Future[Int]
Deletes all journal entries whose timestamp is before or at the given timestamp.
Deletes all journal entries whose timestamp is before or at the given timestamp. This operation need not execute atomically.
- returns
the approximate number of pruned rows, used to adjust the pruning windows to reach optimal batch sizes
- Definition Classes
- ContractKeyJournal → PrunableByTime
- implicit abstract val ec: ExecutionContext
- Attributes
- protected
- Definition Classes
- PrunableByTime
- abstract def fetchStates(keys: Iterable[LfGlobalKey])(implicit traceContext: TraceContext): Future[Map[LfGlobalKey, ContractKeyState]]
Returns the latest state for the given keys.
Returns the latest state for the given keys. The map contains only keys that are found in the store.
- returns
The map from identifiers in
ids
in the store to their latest state. Nonexistent identifiers are excluded from the map.
- Definition Classes
- ContractKeyJournal → ConflictDetectionStore
- abstract def pruningStatus(implicit traceContext: TraceContext): Future[Option[PruningStatus]]
Returns the latest timestamp at which pruning was started or completed.
Returns the latest timestamp at which pruning was started or completed. For com.digitalasset.canton.pruning.PruningPhase.Started, it is guaranteed that no pruning has been run on the store after the returned timestamp. For com.digitalasset.canton.pruning.PruningPhase.Completed, it is guaranteed that the store is pruned at least up to the returned timestamp (inclusive). That is, another pruning with the returned timestamp (or earlier) has no effect on the store. Returns scala.None$ if no pruning has ever been started on the store.
- Definition Classes
- PrunableByTime
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 batchingParameters: Option[PrunableByTimeParameters]
Parameters to control prune batching
Parameters to control prune batching
If defined, then the pruning window will be computed such that it targets the ideal target batch size in order to optimize the load on the database.
This is currently used with the journal stores. Normal pruning of other stores already does batching on its own.
- Attributes
- protected
- Definition Classes
- PrunableByTime
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def fetchState(id: LfGlobalKey)(implicit traceContext: TraceContext): Future[Option[StateChange[Status]]]
Short-hand for fetchStates for a single identifier
Short-hand for fetchStates for a single identifier
- Definition Classes
- ConflictDetectionStore
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def kind: String
- Attributes
- protected
- Definition Classes
- ContractKeyJournal → PrunableByTime
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def prune(limit: CantonTimestamp)(implicit errorLoggingContext: ErrorLoggingContext, closeContext: CloseContext): Future[Unit]
Prune all unnecessary data relating to events before the given timestamp.
Prune all unnecessary data relating to events before the given timestamp.
The meaning of "unnecessary", and whether the limit is inclusive or exclusive both depend on the particular store. The store must implement the actual pruning logic in the doPrune method.
- Definition Classes
- PrunableByTime
- 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])