apache/cassandra · info

Hint dispatch was interrupted

Error message

Hint dispatch was interrupted

What it means

HintsDispatcher's dispatch task waits (awaitUntil) for an outstanding hint delivery to complete. If the waiting thread is interrupted, it logs 'Hint dispatch was interrupted' and returns INTERRUPTED as the dispatch outcome; the hint will be retried later rather than lost.

Source

Thrown at src/java/org/apache/cassandra/hints/HintsDispatcher.java:477

        {
            this.to = to != null ? to : ACCORD_HINT_ENDPOINT;
            this.hintCreationNanoTime = approxTime.translate().fromMillisSinceEpoch(hintCreationTimeMillisSinceEpoch);
            if (accordTxnResult != null)
                accordTxnResult.addCallback(this);
            else
                accordOutcome = SUCCESS;
        }

        Outcome await()
        {
            boolean timedOut;
            try
            {
                timedOut = !condition.awaitUntil(HINT_REQ.expiresAtNanos(start));
            }
            catch (InterruptedException e)
            {
                logger.warn("Hint dispatch was interrupted", e);
                return INTERRUPTED;
            }
            normalOutcome = timedOut ? TIMEOUT : normalOutcome;

            return outcome();
        }

        private Outcome outcome()
        {
            checkState((normalOutcome != null && accordOutcome != null) || (normalOutcome != SUCCESS || accordOutcome != SUCCESS), "Outcome for both normal and accord hint delivery should be known");
            if (normalOutcome == RETRY_DIFFERENT_SYSTEM || accordOutcome == RETRY_DIFFERENT_SYSTEM)
                return RETRY_DIFFERENT_SYSTEM;
            if (normalOutcome == TIMEOUT || accordOutcome == TIMEOUT)
                return TIMEOUT;
            if (normalOutcome == FAILURE || accordOutcome == FAILURE)
                return FAILURE;
            checkState(normalOutcome == SUCCESS && accordOutcome == SUCCESS, "Hint delivery should have been successful");
            return SUCCESS;

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. No action needed during planned shutdown — hints remain queued and are redelivered after restart.
  2. If it appears without a shutdown, check for something calling Thread.interrupt() on executor threads; review executor shutdown hooks andrecent restarts.
  3. Verify the target host recovered and hints eventually flushed: nodetool statushints / check hints directory backlog.
Defensive patterns

Strategy: retry

Try / catch

// Internal path; for operators, treat INTERRUPTED outcome as retryable:
// hints are persisted and redelivered automatically; monitor backlog instead of code
// nodetool statusbackup / hints metrics: org.apache.cassandra.hints HintsService backlog size

Prevention

When it happens

Trigger: Thread interruption during hint delivery wait: node shutdown/decommission draining hint dispatch, hints service stop, or interruptible internal task cancellation.

Common situations: Graceful node shutdown or restart while hints were being dispatched to a recovered peer; decommission/operation mode changes cancelling the hints dispatcher.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/3842e8a6681acbed. Report an issue: GitHub.