{"record":{"id":"5c093d932df5cc74","repo":"apache/pulsar","slug":"maxunackedmessagesperconsumer-must-be-0-or-more","errorCode":null,"errorMessage":"maxUnackedMessagesPerConsumer must be 0 or more","messagePattern":"maxUnackedMessagesPerConsumer must be 0 or more","errorType":"validation","errorClass":"RestException","httpStatus":412,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java","lineNumber":2544,"sourceCode":"                    .attr(\"namespace\", namespaceName)\n                    .attr(\"maxConsumersPerSubscription\", maxConsumersPerSubscription)\n                    .log(\"Successfully updated maxConsumersPerSubscription configuration\");\n        } catch (RestException pfe) {\n            throw pfe;\n        } catch (Exception e) {\n            log.error()\n                    .attr(\"namespace\", namespaceName)\n                    .exception(e)\n                    .log(\"Failed to update maxConsumersPerSubscription configuration\");\n            throw new RestException(e);\n        }\n    }\n\n    protected void internalSetMaxUnackedMessagesPerConsumer(Integer maxUnackedMessagesPerConsumer) {\n        validateNamespacePolicyOperation(namespaceName, PolicyName.MAX_UNACKED, PolicyOperation.WRITE);\n        validatePoliciesReadOnlyAccess();\n        if (maxUnackedMessagesPerConsumer != null && maxUnackedMessagesPerConsumer < 0) {\n            throw new RestException(Status.PRECONDITION_FAILED,\n                    \"maxUnackedMessagesPerConsumer must be 0 or more\");\n        }\n        try {\n            updatePolicies(namespaceName, policies -> {\n                policies.max_unacked_messages_per_consumer = maxUnackedMessagesPerConsumer;\n                return policies;\n            });\n            log.info()\n                    .attr(\"namespace\", namespaceName)\n                    .attr(\"maxUnackedMessagesPerConsumer\", maxUnackedMessagesPerConsumer)\n                    .log(\"Successfully updated maxUnackedMessagesPerConsumer configuration\");\n\n        } catch (RestException pfe) {\n            throw pfe;\n        } catch (Exception e) {\n            log.error()\n                    .attr(\"namespace\", namespaceName)\n                    .exception(e)","sourceCodeStart":2526,"sourceCodeEnd":2562,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java#L2526-L2562","documentation":"Raised by the namespace admin API when setting maxUnackedMessagesPerConsumer to a negative value; the guard rejects the policy update before any persistence happens, returning 412 Precondition Failed.","triggerScenarios":"Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java:2544 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass 0 or a positive integer for maxUnackedMessagesPerConsumer; 0 disables the limit","Remove the negative value from the REST/CLI request payload"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}