object ErrorCategory extends Serializable
- Alphabetic
- By Inheritance
- ErrorCategory
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract class ErrorCategoryImpl extends AnyRef
- final case class GenericErrorCategory(grpcCode: Option[Code], logLevel: Level, retryable: Option[ErrorCategoryRetry], securitySensitive: Boolean, asInt: Int, rank: Int) extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Generic error category class meant to be used as a data container for information deserialized from gRPC statuses (see com.daml.error.utils.DeserializedCantonError).
Generic error category class meant to be used as a data container for information deserialized from gRPC statuses (see com.daml.error.utils.DeserializedCantonError).
Note: Do NOT use this class for adding error category information to error code instances but instead re-use existing ones or define new ones (see ErrorCategory.all)
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 all: Seq[ErrorCategory]
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- 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 fromInt(ii: Int): Option[ErrorCategory]
- 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
- 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()
- implicit val orderingErrorType: Ordering[ErrorCategory]
- 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])
- case object AuthInterceptorInvalidAuthenticationCredentials extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Client is not authenticated properly
Client is not authenticated properly
- Annotations
- @Description(description = """The request does not have valid authentication credentials for the operation. This error is exposed on the API with grpc-status UNAUTHENTICATED without any details for security reasons""") @RetryStrategy(retryStrategy = """Retry after application operator intervention.""") @Resolution(resolution = """Expectation: this is an application bug, application misconfiguration or ledger-level
|misconfiguration. Resolution requires application and/or ledger operator intervention.""")
- case object BackgroundProcessDegradationWarning extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Background daemon notifying about observed degradation
Background daemon notifying about observed degradation
- Annotations
- @Description(description = """This error category is used internally to signal to the system operator an internal degradation.""") @RetryStrategy(retryStrategy = """Not an API error, therefore not retryable.""") @Resolution(resolution = """Inspect details of the specific error for more information.""")
- case object ContentionOnSharedResources extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Failure due to contention on some resources
Failure due to contention on some resources
- Annotations
- @Description(description = """The request could not be processed due to shared processing resources
|(e.g. locks or rate limits that replenish quickly) being occupied.
|If the resource is known (i.e. locked contract), it will be included as a resource info. (Not known
|resource contentions are e.g. overloaded networks where we just observe timeouts, but can’t pin-point the cause).""") @RetryStrategy(retryStrategy = "Retry quickly (indefinitely or limited), but do not retry in load balancer.") @Resolution(resolution = """Expectation: this is processing-flow level contention that should be handled by
|retrying the request with appropriate backoff.""")
- case object DeadlineExceededRequestStateUnknown extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Request completion not observed within a pre-defined window
Request completion not observed within a pre-defined window
- Annotations
- @Description(description = """The request might not have been processed, as its deadline expired before its
|completion was signalled. Note that for requests that change the state of the
|system, this error may be returned even if the request has completed successfully.
|Note that known and well-defined timeouts are signalled as
|[[ContentionOnSharedResources]], while this category indicates that the
|state of the request is unknown.""") @RetryStrategy(retryStrategy = "Retry for a limited number of times with deduplication.") @Resolution(resolution = """Expectation: the deadline might have been exceeded due to transient resource
|congestion or due to a timeout in the request processing pipeline being too low.
|The transient errors might be solved by the application retrying.
|The non-transient errors will require operator intervention to change the timeouts.""")
- case object InsufficientPermission extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Client does not have appropriate permissions
Client does not have appropriate permissions
- Annotations
- @Description(description = """The caller does not have permission to execute the specified operation. This error is exposed on the API with grpc-status PERMISSION_DENIED without any details for security reasons""") @RetryStrategy(retryStrategy = """Retry after application operator intervention.""") @Resolution(resolution = """Expectation: this is an application bug or application misconfiguration. Resolution requires
|application operator intervention.""")
- case object InternalUnsupportedOperation extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
- Annotations
- @Description(description = """This error category is used to signal that an unimplemented code-path has been triggered by a client or participant operator request. This error is exposed on the API with grpc-status UNIMPLEMENTED without any details for security reasons""") @RetryStrategy(retryStrategy = """Errors in this category are non-retryable.""") @Resolution(resolution = """This error is caused by a ledger-level misconfiguration or by an implementation bug.
|Resolution requires participant operator intervention.""")
- case object InvalidGivenCurrentSystemStateOther extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
A failure due to the current system state
A failure due to the current system state
- Annotations
- @Description(description = """The mutable state of the system does not satisfy the preconditions required to execute the request.
|We consider the whole Daml ledger including ledger config, parties, packages, users and command
|deduplication to be mutable system state. Thus all Daml interpretation errors are reported
|as this error or one of its specializations.""") @RetryStrategy(retryStrategy = """Retry after application operator intervention.""") @Resolution(resolution = """ALREADY_EXISTS and NOT_FOUND are special cases for the existence and non-existence of well-defined
|entities within the system state; e.g., a .dalf package, contracts ids, contract keys, or a
|transaction at an offset. OUT_OF_RANGE is a special case for reading past a range. Violations of the
|Daml ledger model always result in these kinds of errors. Expectation: this is due to
|application-level bugs, misconfiguration or contention on application-visible resources; and might be
|resolved by retrying later, or after changing the state of the system. Handling these errors requires
|an application-specific strategy and/or operator intervention.""")
- case object InvalidGivenCurrentSystemStateResourceExists extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
A failure due to a resource already existing in the current system state
A failure due to a resource already existing in the current system state
- Annotations
- @Description(description = """Special type of InvalidGivenCurrentSystemState referring to a well-defined
|resource.""") @RetryStrategy(retryStrategy = """Inspect resource failure and retry after resource failure has been resolved (depends on type of
|resource and application).""") @Resolution(resolution = """Same as [[InvalidGivenCurrentSystemStateOther]].""")
- case object InvalidGivenCurrentSystemStateResourceMissing extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
A failure due to a resource not existing in the current system state
A failure due to a resource not existing in the current system state
- Annotations
- @Description(description = """Special type of InvalidGivenCurrentSystemState referring to a well-defined
|resource.""") @RetryStrategy(retryStrategy = """Inspect resource failure and retry after resource failure has been resolved (depends on type of
|resource and application).""") @Resolution(resolution = """Same as [[InvalidGivenCurrentSystemStateOther]].""")
- case object InvalidGivenCurrentSystemStateSeekAfterEnd extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
The supplied offset is out of range
The supplied offset is out of range
- Annotations
- @Description(description = """This error is only used by the Ledger API server in connection with invalid offsets.""") @RetryStrategy(retryStrategy = """Retry after application operator intervention.""") @Resolution(resolution = """Expectation: this error is only used by the Ledger API server in connection with invalid offsets.""")
- case object InvalidIndependentOfSystemState extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
A request which is never going to be valid
A request which is never going to be valid
- Annotations
- @Description(description = """The request is invalid independent of the state of the system.""") @RetryStrategy(retryStrategy = """Retry after application operator intervention.""") @Resolution(resolution = """Expectation: this is an application bug or ledger-level misconfiguration (e.g. request size limits).
|Resolution requires application and/or ledger operator intervention.""")
- case object SecurityAlert extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
- Annotations
- @Description(description = """A potential attack or a faulty peer component has been detected.
|This error is exposed on the API with grpc-status INVALID_ARGUMENT without any details for security reasons.""") @RetryStrategy(retryStrategy = "Errors in this category are non-retryable.") @Resolution(resolution = """Expectation: this can be a severe issue that requires operator attention or intervention, and
|potentially vendor support. It means that the system has detected invalid information that can be attributed
|to either faulty or malicious manipulation of data coming from a peer source.""")
- case object SystemInternalAssumptionViolated extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Some internal error
Some internal error
- Annotations
- @Description(description = "Request processing failed due to a violation of system internal invariants. This error is exposed on the API with grpc-status INTERNAL without any details for security reasons") @RetryStrategy(retryStrategy = "Retry after operator intervention.") @Resolution(resolution = """Expectation: this is due to a bug in the implementation or data corruption in the systems databases.
|Resolution will require operator intervention, and potentially vendor support.""")
- case object TransientServerFailure extends ErrorCategoryImpl with ErrorCategory with Product with Serializable
Service is temporarily unavailable
Service is temporarily unavailable
- Annotations
- @Description(description = "One of the services required to process the request was not available.") @RetryStrategy(retryStrategy = "Retry quickly in load balancer.") @Resolution(resolution = "Expectation: transient failure that should be handled by retrying the request with appropriate backoff.")