apache/cassandra · info
Request breached global limit of
Error message
Request breached global limit of %d requests/second and triggered backpressure.
What it means
Not an exception: a backpressure notice emitted by the native-transport Dispatcher when a client request pushes throughput past the global native_transport_max_requests_per_second limit. The message is logged at INFO (rate-limited via NoSpamLogger) and also surfaced to the driver as a client warning; the request is throttled rather than rejected.
Solutions
- Raise native_transport_max_requests_per_second in cassandra.yaml (or via JMX) to match workload needs.
- Reduce client-side concurrency (max requests per connection / in-flight limit in the driver).
- Switch or confirm the native_transport_backpressure setting - BYTES_IN_FLIGHT or NONE may fit the workload better.
- Check server-side latency (slow requests occupying the window) before simply raising limits.
Example fix
// cassandra.yaml: before native_transport_max_requests_per_second: 100000 // after native_transport_max_requests_per_second: 1000000
Defensive patterns
Strategy: fallback
Validate before calling
// client-side: estimate request rate before sending: if (!limiter.tryAcquire(1, TimeUnit.SECONDS)) backoffBeforeNextRequest();
Try / catch
// driver surfaces the notice as a query warning; check it: if (executionInfo.getWarnings() != null) { executionInfo.getWarnings().stream().filter(w -> w.contains("breached global limit")).forEach(w -> scheduler.backoff()); } Prevention
- Set driver in-flight request limits below native_transport_max_requests_per_second.
- Watch for the warning in driver execution info during load tests.
- Tune native_transport_max_requests_per_second to realistic throughput.
- Apply client-side rate limiting for bulk loads.
When it happens
Trigger: A native-protocol client sending requests faster than ClientResourceLimits.getNativeTransportMaxRequestsPerSecond() while backpressure is enabled (native_transport_backpressure=REQUESTS), so the REQUESTS case of the backpressure report triggers in processRequest.
Common situations: Bulk-loading with a high driver request rate against a small max-requests-per-second setting; client connection pool mis-tuned (too many in-flight requests per host); benchmarking tools saturating native transport.
Related errors
- Request breached limit(s) on bytes in flight
- Request has spent over
- be positive
- Disabling gossip while native transport is still active is…
- epoll not available
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/d4923baca154dc5d.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/transport/Dispatcher.java:404
// even if ClientWarn is disabled, still setup CoordinatorTrackWarnings, as this will populate metrics and
// emit logs on the server; the warnings will just be ignored and not sent to the client
if (request.isTrackable())
{
CoordinatorWarnings.init();
CoordinatorWriteWarnings.init();
}
switch (backpressure)
{
case NONE:
break;
case REQUESTS:
{
String message = String.format("Request breached global limit of %d requests/second and triggered backpressure.",
ClientResourceLimits.getNativeTransportMaxRequestsPerSecond());
NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);
ClientWarn.instance.warn(message);
break;
}
case BYTES_IN_FLIGHT:
{
String message = String.format("Request breached limit(s) on bytes in flight (Endpoint: %d, Global: %d) and triggered backpressure.",
ClientResourceLimits.getEndpointLimit(), ClientResourceLimits.getGlobalLimit());
NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);
ClientWarn.instance.warn(message);
break;
}
case QUEUE_TIME:
{
String message = String.format("Request has spent over %s time of the maximum timeout %dms in the queue",
DatabaseDescriptor.getNativeTransportQueueMaxItemAgeThreshold(),
DatabaseDescriptor.getNativeTransportTimeout(TimeUnit.MILLISECONDS));
NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);View on GitHub (pinned to 88fd0f6a0e)