DegradedState

Which degraded cluster state a Qdrant error message describes.

These decide the retryable flag on the exception a caller receives, and both engines have to agree about them. They were a copy in each engine until the copies diverged: the fan-out matcher learned timed out on one side and not timeout, so 1 of 1 read operations failed: Timeout error: Deadline Exceeded ... "Healthcheck timeout 2000ms exceeded" read as an ordinary server error, and a condition that clears in seconds told the caller not to retry. One copy cannot disagree with itself.

They live here rather than in an engine because what they decide lives here: KdrantException and its retryable property. They are public only because Kotlin has no cross-module internal.

Matched on the message because the status code does not separate these states. Qdrant answers 403 both when a token may not write and when the node may not, and it answers a downed shard on either side of the 4xx/5xx line depending on which check refused first. There is no machine-readable error code to key on.

Functions

Link copied to clipboard
fun namesReadOnly(message: String?): Boolean

Whether the node is refusing writes while still serving reads.

Link copied to clipboard

Whether a failure is the cluster being unreachable rather than a bad request or a broken server.