object LedgerApiErrors extends LedgerApiErrorGroup
- Annotations
- @Explanation(explanation = "Errors raised by or forwarded by the Ledger API.")
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- LedgerApiErrors
- LedgerApiErrorGroup
- ErrorGroup
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Type Members
- final case class InterfaceViewUpgradeFailureWrapper(root: BaseError)(implicit errorLoggingContext: ErrorLoggingContext) extends DamlErrorWithDefiniteAnswer with Product with Serializable
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
- val EarliestOffsetMetadataKey: String
- val LatestOffsetMetadataKey: String
- 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
- implicit val errorClass: ErrorClass
- Definition Classes
- ErrorGroup
- val fullClassName: String
- Definition Classes
- ErrorGroup
- 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])
- object HeapMemoryOverLimit extends ErrorCode
- Annotations
- @Explanation(explanation = "This error happens when the JVM heap memory pool exceeds a pre-configured limit.") @Resolution(resolution = """The following actions can be taken:
|1. Review the historical use of heap space by inspecting the metric given in the message.
|2. Review the current heap space limits configured in the rate limiting configuration.
|3. Try to space out requests that are likely to require a large amount of memory to process.""")
- object InternalError extends ErrorCode
- Annotations
- @Explanation(explanation = """This error occurs if there was an unexpected error in the Ledger API.""") @Resolution(resolution = "Contact support.")
- object MaximumNumberOfStreams extends ErrorCode
- Annotations
- @Explanation(explanation = "This error happens when the number of concurrent gRPC streaming requests exceeds the configured limit.") @Resolution(resolution = """The following actions can be taken:
|1. Review the historical need for concurrent streaming by inspecting the metric given in the message.
|2. Review the maximum streams limit configured in the rate limiting configuration.
|3. Try to space out streaming requests such that they do not need to run in parallel with each other.""")
- object NoPreferredPackagesFound extends ErrorCode
- Annotations
- @Explanation(explanation = """This error occurs if the topology state of the participant's connected synchronizers cannot satisfy the vetting requirements provided in the request.""") @Resolution(resolution = """Inspect the error message and refine the request or retry again later. If the error persists, inform the involved counterparties about their invalid topology state.""")
- object NoVettedInterfaceImplementationPackage extends ErrorCode
- Annotations
- @Explanation(explanation = """The requested interface view for the template's package-name is unavailable due to a missing vetted package.
|This could be due to a stale stream subscription or the deactivation of an interface implementation
|resulting from the unvetting of its compatible packages.""") @Resolution(resolution = """Close and re-open the stream subscription to refresh the vetting state used for rendering interface views.
|If the problem persists and it is unexpected, contact the participant operator.""")
- object ParticipantBackpressure extends ErrorCode
- Annotations
- @Explanation(explanation = """This error occurs when a participant rejects a command due to excessive load.
|Load can be caused by the following factors:
|1. when commands are submitted to the participant through its Ledger API,
|2. when the participant receives validation requests from other participants through a connected synchronizer.
|
|In order to prevent the participant of being overloaded, it will start to reject commands once a
|certain load threshold is reached. The main threshold is the number of in-flight validation requests
|that the participant is currently processing. These requests can be caused either by this participant
|or by other participants.
|
|For a submission to be counted as an in-flight validation request, the participant must first
|observe its sequencing, which means that there is a delay between the submission and the submitted
|command to be counted towards the currently in-flight validation requests. In order to avoid an
|overload situation by a sudden burst of commands, the participant will also enforce a rate limit
|before a submission is accepted for interpretation. This rate limit can be configured with a steady
|state rate and a burst factor. The burst factor is a multiplier of the steady state rate that allows
|for a certain number of commands to be submitted in a burst before the rate limit kicks in.
|
|As an example, with a rate limit of 1000 commands per second and a burst factor of 2, the rate limit
|will kick in once 2000 commands have been submitted on top of the commands allowed by the rate limit.
|
|""") @Resolution(resolution = """Verify the limits configured, the load and the command latency on the participant and adjust if necessary.
|If the participant is highly loaded, ensure that your application waits some time with the resubmission, preferably with some backoff factor.
|If possible, ask other participants to send fewer requests; the synchronizer operator can enforce this by imposing a rate limit.""")
- object ThreadpoolOverloaded extends ErrorCode
- Annotations
- @Explanation(explanation = "This happens when the rate of submitted gRPC requests requires more CPU or database power than is available.") @Resolution(resolution = """The following actions can be taken:
|Here the 'queue size' for the threadpool is considered as reported by the executor itself.
|1. Review the historical 'queue size' growth by inspecting the metric given in the message.
|2. Review the maximum 'queue size' limits configured in the rate limiting configuration.
|3. Try to space out requests that are likely to require a lot of CPU or database power.
""")