apache/cassandra · warning

Too many Accord trace events stored already; delete some to…

Error message

Too many Accord trace events stored already; delete some to continue tracing

What it means

AccordTracing.admit() enforces a cap (MAX_EVENTS) on stored Accord trace events. Once the in-memory/trace store already holds the maximum, further events are rejected (this call returns false), a client warning is sent to the querying session, and a throttled server-side warning is logged. Tracing stops accumulating new events until old ones are deleted.

Solutions

  1. Delete/expire existing stored Accord trace events (via the trace management commands/JMX) to free capacity before tracing again
  2. Increase the trace event cap if the deployment has memory headroom
  3. Stop/finish the trace session when done so events stop accumulating
  4. Reduce tracing scope (fewer transactions/shorter duration) so fewer events are produced
Defensive patterns

Strategy: fallback

Validate before calling

// before starting a trace, check capacity
if (traceEventStore.count() >= MAX_EVENTS)
    clearStoredTraceEvents();

Prevention

When it happens

Trigger: Running Accord trace sessions (via nodetool/JMX trace commands on Accord transactions) without deleting prior trace events until MAX_EVENTS is reached; every subsequent admit() rejects the event.

Common situations: Long-running tracing left enabled across many transactions; debugging sessions that collect the full event budget and then try to trace more; forgetting to clear/reset the trace store between investigations.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/service/accord/debug/AccordTracing.java:876

                txnIds.clear();
                slowest.clear();
                slowestLookup.clear();
                detachedEvents.clear();
            }
            for (TxnId txnId : untrace)
                untrace(txnId);
        }
    }

    static class GlobalCount extends AtomicInteger
    {
        public boolean admit()
        {
            if (incrementAndGet() <= MAX_EVENTS)
                return true;

            decrementAndGet();
            ClientWarn.instance.warn("Too many Accord trace events stored already; delete some to continue tracing");
            noSpamLogger.warn("Too many Accord trace events stored already; delete some to continue tracing");
            return false;
        }
    }

    private static final AtomicLong lastNowMicros = new AtomicLong();
    private static long uniqueNowMicros()
    {
        long nowMicros = Clock.Global.currentTimeMillis() * 1000;
        while (true)
        {
            long last = lastNowMicros.get();
            if (last >= nowMicros)
                return lastNowMicros.incrementAndGet();
            if (lastNowMicros.compareAndSet(last, nowMicros))
                return nowMicros;
        }
    }

View on GitHub (pinned to 88fd0f6a0e)