com.digitalasset.canton.participant.protocol.reassignment
ReassignmentProcessingSteps
Companion object ReassignmentProcessingSteps
trait ReassignmentProcessingSteps[SubmissionParam, SubmissionResult, RequestViewType <: ReassignmentViewType, PendingReassignmentType <: PendingReassignment] extends ProcessingSteps[SubmissionParam, SubmissionResult, RequestViewType, ReassignmentProcessorError] with NamedLogging
- Alphabetic
- By Inheritance
- ReassignmentProcessingSteps
- NamedLogging
- ProcessingSteps
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- case class CommitAndStoreContractsAndPublishEvent(commitSet: Option[FutureUnlessShutdown[CommitSet]], contractsToBeStored: Seq[SerializableContract], maybeEvent: Option[SequencedUpdate]) extends Product with Serializable
Phase 7, step 3:
Phase 7, step 3:
- commitSet
scala.None$ if the request should be rejected scala.Some$ a future that will produce the commit set for updating the active contract store
- contractsToBeStored
The contracts to be persisted to the contract store.
- maybeEvent
The event to be published via the com.digitalasset.canton.participant.event.RecordOrderPublisher
- Definition Classes
- ProcessingSteps
- case class DecryptedViews(views: Seq[(WithRecipients[DecryptedView], Option[Signature])], decryptionErrors: Seq[EncryptedViewMessageError]) extends Product with Serializable
Phase 3, step 1a:
Phase 3, step 1a:
- views
The successfully decrypted views and their signatures. Signatures are only present for top-level views (where the submitter metadata is not blinded)
- decryptionErrors
The decryption errors while trying to decrypt the views
- Definition Classes
- ProcessingSteps
- trait PreparedBatch extends AnyRef
The actual batch to be sent for a TrackedSubmission
The actual batch to be sent for a TrackedSubmission
- Definition Classes
- ProcessingSteps
- case class StorePendingDataAndSendResponseAndCreateTimeout(pendingData: RequestType.PendingRequestData, confirmationResponsesF: EitherT[FutureUnlessShutdown, RequestError, Option[(ConfirmationResponses, Recipients)]], rejectionArgs: RejectionArgs) extends Product with Serializable
Phase 3:
Phase 3:
- pendingData
The
requestType.PendingRequestData
to be stored until Phase 7- confirmationResponsesF
The responses to be sent to the mediator
- rejectionArgs
The implementation-specific arguments needed to create a rejection event on timeout
- Definition Classes
- ProcessingSteps
- sealed trait Submission extends AnyRef
- Definition Classes
- ProcessingSteps
- trait TrackedSubmission extends Submission
Submission to be tracked in-flight and with deduplication.
Submission to be tracked in-flight and with deduplication.
The actual batch to be sent is computed only later by TrackedSubmission.prepareBatch so that tracking information (e.g., the chosen deduplication period) can be incorporated into the batch.
- Definition Classes
- ProcessingSteps
- trait UntrackedSubmission extends Submission
Submission to be sent off without tracking the in-flight submission and without deduplication.
Submission to be sent off without tracking the in-flight submission and without deduplication.
- Definition Classes
- ProcessingSteps
- type DecryptedView = RequestViewType.View
The type of decrypted view trees
The type of decrypted view trees
- Definition Classes
- ProcessingSteps
- type FullView = RequestViewType.FullView
The type of full view trees, i.e., after decomposing light views.
The type of full view trees, i.e., after decomposing light views.
- Definition Classes
- ProcessingSteps
- type ParsedRequestType = ParsedReassignmentRequest[FullView]
Type of a request that has been parsed and contains at least one well-formed view.
Type of a request that has been parsed and contains at least one well-formed view.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type PendingSubmissionData = PendingReassignmentSubmission
The data stored for submissions that have been sent out, if any.
The data stored for submissions that have been sent out, if any. It is created by createSubmission and passed to createSubmissionResult
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type PendingSubmissionId = RootHash
The type used for look-ups into the PendingSubmissions
The type used for look-ups into the PendingSubmissions
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type PendingSubmissions = Map[RootHash, PendingReassignmentSubmission]
A store of data on submissions that have been sent out, if any
A store of data on submissions that have been sent out, if any
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- case class ReassignmentsSubmission(batch: Batch[DefaultOpenEnvelope], pendingSubmissionId: PendingSubmissionId) extends UntrackedSubmission with Product with Serializable
- type RejectionArgs = ReassignmentProcessingSteps.RejectionArgs[PendingReassignmentType]
The type of data needed to create a rejection event in createRejectionEvent.
The type of data needed to create a rejection event in createRejectionEvent. Created by constructPendingDataAndResponse
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type RequestBatch = RequestAndRootHashMessage[OpenEnvelope[EncryptedViewMessage[RequestViewType]]]
The type of request messages
The type of request messages
- Definition Classes
- ProcessingSteps
- type RequestError = ReassignmentProcessorError
The type of errors that can occur during request processing
The type of errors that can occur during request processing
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- abstract type RequestType <: Reassignment
The type of the request (transaction, unassignment, assignment)
The type of the request (transaction, unassignment, assignment)
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type ResultError = ReassignmentProcessorError
The type of errors that can occur during result processing
The type of errors that can occur during result processing
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- abstract type SubmissionResultArgs
The type of data needed to generate the submission result in createSubmissionResult.
The type of data needed to generate the submission result in createSubmissionResult. The data is created by updatePendingSubmissions.
- Definition Classes
- ProcessingSteps
- type SubmissionSendError = ReassignmentProcessorError
The submission errors that can occur during sending the batch to the sequencer and updating the pending submission map.
The submission errors that can occur during sending the batch to the sequencer and updating the pending submission map.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- type ViewSubmitterMetadata = RequestViewType.ViewSubmitterMetadata
- Definition Classes
- ProcessingSteps
Abstract Value Members
- abstract def computeActivenessSet(parsedRequest: ParsedRequestType)(implicit traceContext: TraceContext): Either[RequestError, ActivenessSet]
Phase 3, step 2 (some good views)
Phase 3, step 2 (some good views)
- Definition Classes
- ProcessingSteps
- abstract def constructPendingDataAndResponse(parsedRequest: ParsedRequestType, reassignmentLookup: ReassignmentLookup, activenessResultFuture: FutureUnlessShutdown[ActivenessResult], engineController: EngineController, decisionTimeTickRequest: TickRequest)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, RequestError, StorePendingDataAndSendResponseAndCreateTimeout]
Phase 3, step 3: Yields the pending data and confirmation responses for the case that at least one payload is well-formed.
Phase 3, step 3: Yields the pending data and confirmation responses for the case that at least one payload is well-formed.
- reassignmentLookup
Read-only interface of the com.digitalasset.canton.participant.store.memory.ReassignmentCache
- activenessResultFuture
Future of the result of the activeness check
- returns
Returns the
requestType.PendingRequestData
to be stored until Phase 7 and the responses to be sent to the mediator.
- Definition Classes
- ProcessingSteps
- abstract def contractAuthenticator: ContractAuthenticator
- Attributes
- protected
- abstract def createSubmission(submissionParam: SubmissionParam, mediator: MediatorGroupRecipient, ephemeralState: SyncEphemeralStateLookup, recentSnapshot: SynchronizerSnapshotSyncCryptoApi)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, ReassignmentProcessorError, Submission]
Phase 1, step 1:
Phase 1, step 1:
- submissionParam
The parameter object encapsulating the parameters of the submit method
- mediator
The mediator ID to use for this submission
- ephemeralState
Read-only access to the com.digitalasset.canton.participant.sync.SyncEphemeralState
- recentSnapshot
A recent snapshot of the topology state to be used for submission
- Definition Classes
- ProcessingSteps
- abstract def createSubmissionResult(deliver: Deliver[Envelope[_]], submissionResultArgs: SubmissionResultArgs): SubmissionResult
Phase 1, step 3:
Phase 1, step 3:
- Definition Classes
- ProcessingSteps
- abstract def decryptTree(snapshot: SynchronizerSnapshotSyncCryptoApi, sessionKeyStore: ConfirmationRequestSessionKeyStore)(envelope: OpenEnvelope[EncryptedViewMessage[RequestViewType]])(implicit tc: TraceContext): EitherT[FutureUnlessShutdown, EncryptedViewMessageError, (WithRecipients[DecryptedView], Option[Signature])]
- Attributes
- protected
- implicit abstract def ec: ExecutionContext
- Attributes
- protected
- abstract def explicitMediatorGroup(param: SubmissionParam): Option[MediatorGroupIndex]
Extract an optionally explicitly chosen mediator group index
Extract an optionally explicitly chosen mediator group index
- Definition Classes
- ProcessingSteps
- abstract def getCommitSetAndContractsToBeStoredAndEvent(event: WithOpeningErrors[SignedContent[Deliver[DefaultOpenEnvelope]]], verdict: Verdict, pendingRequestData: RequestType.PendingRequestData, pendingSubmissions: PendingSubmissions, hashOps: HashOps)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, ResultError, CommitAndStoreContractsAndPublishEvent]
Phase 7, step 2:
Phase 7, step 2:
- event
The signed com.digitalasset.canton.sequencing.protocol.Deliver event containing the confirmation result. It is ensured that the
event
contains exactly one com.digitalasset.canton.protocol.messages.ConfirmationResultMessage- verdict
The verdict that is contained in the
event
- pendingRequestData
The
requestType.PendingRequestData
produced in Phase 3- pendingSubmissions
The data stored on submissions in the PendingSubmissions
- returns
The com.digitalasset.canton.participant.protocol.conflictdetection.CommitSet, the contracts from Phase 3 to be persisted to the contract store, and the event to be published
- Definition Classes
- ProcessingSteps
- abstract def handleTimeout(parsedRequest: ParsedRequestType)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, ResultError, Unit]
Processor specific handling of the timeout
Processor specific handling of the timeout
- Definition Classes
- ProcessingSteps
- abstract def localRejectFromActivenessCheck(requestId: RequestId, activenessResult: ActivenessResult, validationResult: ReassignmentValidationResult): Option[LocalRejectError]
- abstract def loggerFactory: NamedLoggerFactory
- Attributes
- protected
- Definition Classes
- NamedLogging
- abstract val participantId: ParticipantId
- abstract def pendingSubmissions(state: SyncEphemeralState): PendingSubmissions
Selector to get the PendingSubmissions, if any
Selector to get the PendingSubmissions, if any
- Definition Classes
- ProcessingSteps
- abstract def requestKind: String
The kind of request, used for logging and error reporting
The kind of request, used for logging and error reporting
- Definition Classes
- ProcessingSteps
- abstract val requestType: RequestType
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- abstract def submissionDescription(param: SubmissionParam): String
Extract a description for a submission, used for logging and error reporting
Extract a description for a submission, used for logging and error reporting
- Definition Classes
- ProcessingSteps
- abstract def submissionIdOfPendingRequest(pendingData: RequestType.PendingRequestData): PendingSubmissionId
Extract the submission ID that corresponds to a pending request, if any
Extract the submission ID that corresponds to a pending request, if any
- Definition Classes
- ProcessingSteps
- abstract val synchronizerId: ReassignmentTag[SynchronizerId]
- abstract def updatePendingSubmissions(pendingSubmissions: PendingSubmissions, submissionParam: SubmissionParam, pendingSubmissionId: PendingSubmissionId): EitherT[Future, SubmissionSendError, SubmissionResultArgs]
Phase 1, step 2:
Phase 1, step 2:
- pendingSubmissions
Stateful store to be updated with data on the pending submission
- submissionParam
Implementation-specific details on the submission, used for logging
- pendingSubmissionId
The key used for updates to the pendingSubmissions
- Definition Classes
- ProcessingSteps
Concrete Value Members
- object DecryptedViews extends Serializable
- Definition Classes
- ProcessingSteps
- 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 authenticateInputContracts(parsedRequest: ParsedRequestType)(implicit traceContext: TraceContext): EitherT[Future, ReassignmentProcessorError, Unit]
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def computeFullViews(decryptedViewsWithSignatures: Seq[(WithRecipients[DecryptedView], Option[Signature])]): (Seq[(WithRecipients[FullView], Option[Signature])], Seq[MalformedPayload])
Phase 3, step 1b
Phase 3, step 1b
Converts the decrypted (possible light-weight) view trees to the corresponding full view trees. Views that cannot be converted are mapped to ProtocolProcessor.MalformedPayload errors.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def computeParsedRequest(rc: RequestCounter, ts: CantonTimestamp, sc: SequencerCounter, rootViewsWithMetadata: NonEmpty[Seq[(WithRecipients[FullView], Option[Signature])]], submitterMetadataO: Option[ViewSubmitterMetadata], isFreshOwnTimelyRequest: Boolean, malformedPayloads: Seq[MalformedPayload], mediator: MediatorGroupRecipient, snapshot: SynchronizerSnapshotSyncCryptoApi, synchronizerParameters: DynamicSynchronizerParametersWithValidity)(implicit traceContext: TraceContext): FutureUnlessShutdown[ParsedReassignmentRequest[FullView]]
Phase 3, step 1c
Phase 3, step 1c
Create a ParsedRequest out of the data computed so far.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def constructResponsesForMalformedPayloads(requestId: RequestId, rootHash: RootHash, malformedPayloads: Seq[MalformedPayload])(implicit traceContext: TraceContext): Option[ConfirmationResponses]
Phase 3: Yields the mediator responses (i.e.
Phase 3: Yields the mediator responses (i.e. rejections) for the case that all payloads are malformed.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def createConfirmationResponses(requestId: RequestId, topologySnapshot: TopologySnapshot, protocolVersion: ProtocolVersion, confirmingParties: Set[LfPartyId], validationResult: ReassignmentValidationResult)(implicit traceContext: TraceContext): FutureUnlessShutdown[Option[ConfirmationResponses]]
- Attributes
- protected
- def createRejectionEvent(rejectionArgs: RejectionArgs)(implicit traceContext: TraceContext): Either[ReassignmentProcessorError, Option[SequencedUpdate]]
Phase 3, step 4:
Phase 3, step 4:
- rejectionArgs
The implementation-specific information needed for the creation of the rejection event
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def decryptViews(batch: NonEmpty[Seq[OpenEnvelope[EncryptedViewMessage[RequestViewType]]]], snapshot: SynchronizerSnapshotSyncCryptoApi, sessionKeyStore: ConfirmationRequestSessionKeyStore)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, ReassignmentProcessorError, DecryptedViews]
Phase 3, step 1:
Phase 3, step 1:
- batch
The batch of messages in the request to be processed
- snapshot
Snapshot of the topology state at the request timestamp
- returns
The decrypted views and the errors encountered during decryption
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def embedNoMediatorError(error: NoMediatorError): ReassignmentProcessorError
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def embedRequestError(err: RequestProcessingError): ReassignmentProcessorError
Wrap an error in request processing from the generic request processor
Wrap an error in request processing from the generic request processor
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def embedResultError(err: ResultProcessingError): ReassignmentProcessorError
Wrap an error in result processing from the generic request processor
Wrap an error in result processing from the generic request processor
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- 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
- def eventAndSubmissionIdForRejectedCommand(ts: CantonTimestamp, sc: SequencerCounter, submitterMetadata: ViewSubmitterMetadata, rootHash: RootHash, freshOwnTimelyTx: Boolean, error: TransactionError)(implicit traceContext: TraceContext): (Option[SequencedUpdate], Option[PendingSubmissionId])
Phase 3, step 2: Some good views, but we are rejecting (e.g.
Phase 3, step 2: Some good views, but we are rejecting (e.g. because the chosen mediator is inactive or there are no valid recipients).
- ts
The timestamp of the request
- sc
The com.digitalasset.canton.SequencerCounter of the request
- submitterMetadata
Metadata of the submitter
- rootHash
Root hash of the transaction
- freshOwnTimelyTx
The resolved status from com.digitalasset.canton.participant.protocol.SubmissionTracker.register
- error
Error to be included in the generated event
- returns
The optional rejection event to be published in the event log, and the optional submission ID corresponding to this request
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def getSubmitterInformation(views: Seq[DecryptedView]): Option[ViewSubmitterMetadata]
Return the submitter metadata
Return the submitter metadata
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- 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
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def performPendingSubmissionMapUpdate(pendingSubmissionMap: Map[RootHash, PendingReassignmentSubmission], reassignmentRef: ReassignmentRef, submitterLf: LfPartyId, rootHash: RootHash): EitherT[Future, ReassignmentProcessorError, PendingReassignmentSubmission]
- Attributes
- protected
- def postProcessResult(verdict: Verdict, pendingSubmission: PendingReassignmentSubmission)(implicit traceContext: TraceContext): Unit
Phase 7, step 4:
Phase 7, step 4:
Called after the request reached the state com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Clean in the request journal, if the participant is the submitter. Also called if a timeout occurs with com.digitalasset.canton.protocol.messages.Verdict.MediatorReject.
- verdict
The verdict on the request
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def postProcessSubmissionRejectedCommand(error: TransactionError, pendingSubmission: PendingReassignmentSubmission)(implicit traceContext: TraceContext): Unit
Phase 3, step 2 (rejected submission, e.g.
Phase 3, step 2 (rejected submission, e.g. chosen mediator is inactive, invalid recipients)
Called when we are rejecting the submission and eventAndSubmissionIdForRejectedCommand returned a submission ID that was pending.
- pendingSubmission
The PendingSubmissionData for the submission ID returned by eventAndSubmissionIdForRejectedCommand
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- See also
com.digitalasset.canton.participant.protocol.ProcessingSteps.postProcessResult
- def removePendingSubmission(pendingSubmissions: Map[RootHash, PendingReassignmentSubmission], pendingSubmissionId: RootHash): Option[PendingReassignmentSubmission]
Phase 1, step 4; and Phase 7, step 1:
Phase 1, step 4; and Phase 7, step 1:
Remove the pending submission from the pending submissions. Called when sending the submission failed or did not lead to a result in time or a result has arrived for the request.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- def setDecisionTimeTickRequest(pendingSubmissions: Map[RootHash, PendingReassignmentSubmission], pendingSubmissionId: RootHash, requestedTick: TickRequest): Unit
Phase 1, step 3:
Phase 1, step 3:
Remember the com.digitalasset.canton.time.SynchronizerTimeTracker.TickRequest for the decision time in the PendingSubmissionData so that the tick request can be cancelled if the tick is no longer needed. Called when sending the submission succeeded.
- Definition Classes
- ReassignmentProcessingSteps → ProcessingSteps
- 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])