{"record":{"id":"6388e3bc66e3fbc4","repo":"apache/beam","slug":"solaceio-write-overriding-pub-ack-window-size-to-since","errorCode":null,"errorMessage":"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since HIGHER_THROUGHPUT mode was selected","messagePattern":"SolaceIO\\.Write: Overriding PUB_ACK_WINDOW_SIZE to (.+?) since HIGHER_THROUGHPUT mode was selected","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java","lineNumber":227,"sourceCode":"    // PUB_ACK_WINDOW_SIZE heavily affects performance when publishing persistent\n    // messages. It can be a value between 1 and 255. This is the batch size for the ack\n    // received from Solace. A value of 1 will have the lowest latency, but a very low\n    // throughput and a monumental backpressure.\n\n    // Retrieve current values of the properties\n    Boolean msgCbProp = props.getBooleanProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR);\n    Integer ackWindowSize = props.getIntegerProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE);\n\n    switch (mode) {\n      case HIGHER_THROUGHPUT:\n        // Check if it was set by user, show override warning\n        if (msgCbProp != null && msgCbProp) {\n          LOG.warn(\n              \"SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to false since\"\n                  + \" HIGHER_THROUGHPUT mode was selected\");\n        }\n        if ((ackWindowSize != null && ackWindowSize != BATCHED_PUB_ACK_WINDOW)) {\n          LOG.warn(\n              \"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since\"\n                  + \" HIGHER_THROUGHPUT mode was selected\",\n              BATCHED_PUB_ACK_WINDOW);\n        }\n\n        // Override the properties\n        // Use a dedicated thread for callbacks, increase the ack window size\n        props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, false);\n        props.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, BATCHED_PUB_ACK_WINDOW);\n        LOG.info(\n            \"SolaceIO.Write: Using HIGHER_THROUGHPUT mode, MESSAGE_CALLBACK_ON_REACTOR is FALSE,\"\n                + \" PUB_ACK_WINDOW_SIZE is {}\",\n            BATCHED_PUB_ACK_WINDOW);\n        break;\n      case LOWER_LATENCY:\n        // Check if it was set by user, show override warning\n        if (msgCbProp != null && !msgCbProp) {\n          LOG.warn(","sourceCodeStart":209,"sourceCodeEnd":245,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java#L209-L245","documentation":"When HIGHER_THROUGHPUT submission mode is selected, Solace publisher SessionService overrides PUB_ACK_WINDOW_SIZE to BATCHED_PUB_ACK_WINDOW. If the user had set a different ack window, this WARN tells them their value is replaced. Informational only.","triggerScenarios":"write().withSubmissionMode(HIGHER_THROUGHPUT) combined with an explicit JCSMPProperties.PUB_ACK_WINDOW_SIZE that differs from BATCHED_PUB_ACK_WINDOW.","commonSituations":"Users hand-tuning ack windows for throughput/latency tradeoffs but then also selecting a built-in submission mode that re-applies its own defaults.","solutions":["Accept the override (it is the mode's intended behavior).","If a custom ack window matters, use SubmissionMode.CUSTOM with your full JCSMP properties.","Remove the explicit PUB_ACK_WINDOW_SIZE to silence the warning."],"exampleFix":"// before\nprops.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, 51);\n.withSubmissionMode(SubmissionMode.HIGHER_THROUGHPUT);\n// after: keep custom value via CUSTOM mode\n.withSubmissionMode(SubmissionMode.CUSTOM);","handlingStrategy":"validation","validationCode":"Integer ackWindow = (Integer) props.getProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE);\nif (mode == SubmissionMode.HIGHER_THROUGHPUT && ackWindow != null && ackWindow != BATCHED_PUB_ACK_WINDOW) {\n  LOG.warn(\"Custom PUB_ACK_WINDOW_SIZE \" + ackWindow + \" will be overridden\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use SubmissionMode.CUSTOM when a hand-tuned ack window matters.","Document custom JCSMP settings next to the write transform config.","Review broker-side batching behavior after mode changes."],"tags":["java","solace","message-queue","configuration"],"backgroundTag":"conflicting-config-options","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}