{"record":{"id":"40f113d05df53137","repo":"apache/beam","slug":"solaceio-write-overriding-message-callback-on-reactor-to-40f113","errorCode":null,"errorMessage":"SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to true since LOWER_LATENCY mode was selected","messagePattern":"SolaceIO\\.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to true 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":245,"sourceCode":"          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(\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,\"","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java#L227-L263","documentation":"With LOWER_LATENCY submission mode, the Solace connector forces MESSAGE_CALLBACK_ON_REACTOR to true. If the user explicitly set it to false, this WARN reports the override. Informational, not an error.","triggerScenarios":"write().withSubmissionMode(LOWER_LATENCY) while JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR is set to false by the user.","commonSituations":"Users reusing high-throughput producer properties with a low-latency mode.","solutions":["No action needed — the override is intentional for LOWER_LATENCY.","If you need callback-on-reactor disabled, use HIGHER_THROUGHPUT or CUSTOM mode.","Delete the explicit property to stop the warning."],"exampleFix":"// before\nprops.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, false);\n.withSubmissionMode(SubmissionMode.LOWER_LATENCY);\n// after\n.withSubmissionMode(SubmissionMode.HIGHER_THROUGHPUT);","handlingStrategy":"validation","validationCode":"if (mode == SubmissionMode.LOWER_LATENCY && userSetMessageCallbackOnReactorToFalse()) {\n  LOG.warn(\"MESSAGE_CALLBACK_ON_REACTOR=false will be overridden to true\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pick submission mode first; only then set complementary properties.","Centralize Solace session-property construction in one helper.","Treat these warnings as config-review signals in CI logs."],"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"}