Skip to main content

is_retryable_kind

Function is_retryable_kind 

Source
pub fn is_retryable_kind(kind: ErrorKind) -> bool
Expand description

Classify a ferriskey ErrorKind as retryable by the caller.

Returns true for kinds that are known-safe to retry:

  • IoError, FatalSendError: the request never reached the server.
  • TryAgain: Valkey explicitly asked for a retry.
  • BusyLoadingError: Valkey is booting; transient.
  • ClusterDown: cluster is rebalancing; transient.

Returns false for:

  • FatalReceiveError: the request may have been applied server-side but the response was lost. Treated as non-retryable by default because ff-server cannot know if the operation was idempotent. Callers that know the operation is idempotent may retry anyway, but this helper errs on the safe side.
  • Moved / Ask: ferriskey handles cluster redirects internally; if they surface to the caller it means the redirect chain already failed, and another caller-level retry will hit the same wall.
  • AuthenticationFailed / PermissionDenied / InvalidClientConfig: config mismatch, not transient.
  • NoScriptError: fcall_with_reload already did the reload-retry internally; if we surface NOSCRIPT to the caller, the library is missing even after reload.
  • Any other kind: conservative default false.