{"record":{"id":"d4923baca154dc5d","repo":"apache/cassandra","slug":"request-breached-global-limit-of-d-requests-secon","errorCode":null,"errorMessage":"Request breached global limit of %d requests/second and triggered backpressure.","messagePattern":"Request breached global limit of (.+?) requests/second and triggered backpressure\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"src/java/org/apache/cassandra/transport/Dispatcher.java","lineNumber":404,"sourceCode":"        // even if ClientWarn is disabled, still setup CoordinatorTrackWarnings, as this will populate metrics and\n        // emit logs on the server; the warnings will just be ignored and not sent to the client\n        if (request.isTrackable())\n        {\n            CoordinatorWarnings.init();\n            CoordinatorWriteWarnings.init();\n        }\n\n        switch (backpressure)\n        {\n            case NONE:\n                break;\n            case REQUESTS:\n            {\n                String message = String.format(\"Request breached global limit of %d requests/second and triggered backpressure.\",\n                                               ClientResourceLimits.getNativeTransportMaxRequestsPerSecond());\n\n                NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);\n                ClientWarn.instance.warn(message);\n                break;\n            }\n            case BYTES_IN_FLIGHT:\n            {\n                String message = String.format(\"Request breached limit(s) on bytes in flight (Endpoint: %d, Global: %d) and triggered backpressure.\",\n                                               ClientResourceLimits.getEndpointLimit(), ClientResourceLimits.getGlobalLimit());\n\n                NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);\n                ClientWarn.instance.warn(message);\n                break;\n            }\n            case QUEUE_TIME:\n            {\n                String message = String.format(\"Request has spent over %s time of the maximum timeout %dms in the queue\",\n                                               DatabaseDescriptor.getNativeTransportQueueMaxItemAgeThreshold(),\n                                               DatabaseDescriptor.getNativeTransportTimeout(TimeUnit.MILLISECONDS));\n\n                NoSpamLogger.log(logger, NoSpamLogger.Level.INFO, 1, TimeUnit.MINUTES, message);","sourceCodeStart":386,"sourceCodeEnd":422,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/transport/Dispatcher.java#L386-L422","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// cassandra.yaml: before native_transport_max_requests_per_second: 100000 // after native_transport_max_requests_per_second: 1000000","handlingStrategy":"fallback","validationCode":"// client-side: estimate request rate before sending: if (!limiter.tryAcquire(1, TimeUnit.SECONDS)) backoffBeforeNextRequest();","typeGuard":null,"tryCatchPattern":"// 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()); }","preventionTips":["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."],"tags":["native-transport","backpressure","rate-limit","throttling"],"backgroundTag":"rate-limit-exceeded","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}