use super::*;
define_error_catalog! {
CLIENT_RETRY_BUDGET_EXHAUSTED {
code: "client.retry.budget_exhausted",
class: ErrorClass::CAPACITY,
condition: CanonicalCondition::ResourceExhausted,
fault: FaultAttribution::LocalResource,
component: ComponentId::CLIENT,
public_message: "Retry budget was exhausted",
severity: ErrorSeverity::Warn,
recovery_hint: RecoveryHint::Never,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [fields::GROUP, fields::CURRENT, fields::MAX],
projection: {
remoting: RemotingResponseCode::SystemBusy,
grpc: {
payload: GrpcPayloadCode::TooManyRequests,
status: GrpcStatusCode::ResourceExhausted,
},
http: HttpStatusCode::TOO_MANY_REQUESTS,
cli: CliExitCode::TEMPORARY_FAILURE,
},
}
CLIENT_LIFECYCLE_NOT_STARTED {
code: "client.lifecycle.not_started",
class: ErrorClass::VALIDATION,
condition: CanonicalCondition::FailedPrecondition,
fault: FaultAttribution::Caller,
component: ComponentId::CLIENT,
public_message: "Client is not started",
severity: ErrorSeverity::Error,
recovery_hint: RecoveryHint::Never,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [],
projection: {
remoting: RemotingResponseCode::SystemError,
grpc: {
payload: GrpcPayloadCode::InternalError,
status: GrpcStatusCode::FailedPrecondition,
},
http: HttpStatusCode::CONFLICT,
cli: CliExitCode::DATA,
},
}
CLIENT_LIFECYCLE_ALREADY_STARTED {
code: "client.lifecycle.already_started",
class: ErrorClass::VALIDATION,
condition: CanonicalCondition::AlreadyExists,
fault: FaultAttribution::Caller,
component: ComponentId::CLIENT,
public_message: "Client is already started",
severity: ErrorSeverity::Error,
recovery_hint: RecoveryHint::Never,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [],
projection: {
remoting: RemotingResponseCode::SystemError,
grpc: {
payload: GrpcPayloadCode::BadRequest,
status: GrpcStatusCode::AlreadyExists,
},
http: HttpStatusCode::CONFLICT,
cli: CliExitCode::DATA,
},
}
CLIENT_LIFECYCLE_SHUTTING_DOWN {
code: "client.lifecycle.shutting_down",
class: ErrorClass::UNAVAILABLE,
condition: CanonicalCondition::Unavailable,
fault: FaultAttribution::LocalResource,
component: ComponentId::CLIENT,
public_message: "Client is shutting down",
severity: ErrorSeverity::Error,
recovery_hint: RecoveryHint::Never,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [],
projection: {
remoting: RemotingResponseCode::SystemError,
grpc: {
payload: GrpcPayloadCode::InternalError,
status: GrpcStatusCode::Unavailable,
},
http: HttpStatusCode::SERVICE_UNAVAILABLE,
cli: CliExitCode::UNAVAILABLE,
},
}
CLIENT_LIFECYCLE_INVALID_STATE {
code: "client.lifecycle.invalid_state",
class: ErrorClass::VALIDATION,
condition: CanonicalCondition::FailedPrecondition,
fault: FaultAttribution::Caller,
component: ComponentId::CLIENT,
public_message: "Client state is invalid",
severity: ErrorSeverity::Error,
recovery_hint: RecoveryHint::Never,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [fields::EXPECTED_STATE, fields::ACTUAL_STATE],
projection: {
remoting: RemotingResponseCode::SystemError,
grpc: {
payload: GrpcPayloadCode::InternalError,
status: GrpcStatusCode::FailedPrecondition,
},
http: HttpStatusCode::CONFLICT,
cli: CliExitCode::DATA,
},
}
CLIENT_COMPONENT_UNAVAILABLE {
code: "client.component.unavailable",
class: ErrorClass::UNAVAILABLE,
condition: CanonicalCondition::Unavailable,
fault: FaultAttribution::LocalResource,
component: ComponentId::CLIENT,
public_message: "Client component is unavailable",
severity: ErrorSeverity::Error,
recovery_hint: RecoveryHint::SwitchBroker,
backtrace: BacktracePolicy::Never,
exposure: Exposure::Public,
fields: [fields::CLIENT_ROLE],
projection: {
remoting: RemotingResponseCode::SystemError,
grpc: {
payload: GrpcPayloadCode::InternalError,
status: GrpcStatusCode::Unavailable,
},
http: HttpStatusCode::SERVICE_UNAVAILABLE,
cli: CliExitCode::UNAVAILABLE,
},
}
}