{"record":{"id":"5dcbfd61bd04838b","repo":"apache/beam","slug":"solaceio-write-overriding-pub-ack-window-size-to-since-lower","errorCode":null,"errorMessage":"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since LOWER_LATENCY mode was selected","messagePattern":"SolaceIO\\.Write: Overriding PUB_ACK_WINDOW_SIZE to (.+?) since LOWER_LATENCY 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":251,"sourceCode":"        // 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(\n              \"SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to true since\"\n                  + \" LOWER_LATENCY mode was selected\");\n        }\n\n        if ((ackWindowSize != null && ackWindowSize != STREAMING_PUB_ACK_WINDOW)) {\n          LOG.warn(\n              \"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since\"\n                  + \" LOWER_LATENCY mode was selected\",\n              STREAMING_PUB_ACK_WINDOW);\n        }\n\n        // Override the properties\n        // Send from the same thread where the produced is being called. This offers the lowest\n        // latency, but a low throughput too.\n        props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, true);\n        props.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, STREAMING_PUB_ACK_WINDOW);\n        LOG.info(\n            \"SolaceIO.Write: Using LOWER_LATENCY mode, MESSAGE_CALLBACK_ON_REACTOR is TRUE,\"\n                + \" PUB_ACK_WINDOW_SIZE is {}\",\n            STREAMING_PUB_ACK_WINDOW);\n\n        break;\n      case CUSTOM:\n        LOG.info(","sourceCodeStart":233,"sourceCodeEnd":269,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java#L233-L269","documentation":"INFO-level warning logged by the Solace SessionService when LOWER_LATENCY write mode is selected but the user had explicitly set a PUB_ACK_WINDOW_SIZE. The connector overrides the user's value with the latency-optimized default in LOWER_LATENCY mode, and this log documents the override so the behavior change is not a surprise.","triggerScenarios":"write().withSubmissionMode(LOWER_LATENCY) with an explicit PUB_ACK_WINDOW_SIZE other than STREAMING_PUB_ACK_WINDOW.","commonSituations":"Custom ack-window tuning colliding with a built-in submission mode preset.","solutions":["Accept the override or use SubmissionMode.CUSTOM to keep your own window size.","Remove the explicit PUB_ACK_WINDOW_SIZE setting to silence the warning.","Verify throughput/latency behavior after the override in a test pipeline."],"exampleFix":"// before\nprops.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, 255);\n.withSubmissionMode(SubmissionMode.LOWER_LATENCY);\n// after\n.withSubmissionMode(SubmissionMode.CUSTOM); // keeps user window","handlingStrategy":"validation","validationCode":"Integer ackWindow = (Integer) props.getProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE);\nif (mode == SubmissionMode.LOWER_LATENCY && ackWindow != null && ackWindow != STREAMING_PUB_ACK_WINDOW) {\n  LOG.warn(\"PUB_ACK_WINDOW_SIZE=\" + ackWindow + \" will be overridden to \" + STREAMING_PUB_ACK_WINDOW);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify effective session properties in an integration test before production.","Use CUSTOM mode to preserve any explicitly tuned ack window.","Log resolved properties at pipeline startup for audit."],"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"}