apache/beam · warning
SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to…
Error message
SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to true since LOWER_LATENCY mode was selected
What it means
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.
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.
Example fix
// before props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, false); .withSubmissionMode(SubmissionMode.LOWER_LATENCY); // after .withSubmissionMode(SubmissionMode.HIGHER_THROUGHPUT);
Defensive patterns
Strategy: validation
Validate before calling
if (mode == SubmissionMode.LOWER_LATENCY && userSetMessageCallbackOnReactorToFalse()) {
LOG.warn("MESSAGE_CALLBACK_ON_REACTOR=false will be overridden to true");
} Prevention
- 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.
When it happens
Trigger: write().withSubmissionMode(LOWER_LATENCY) while JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR is set to false by the user.
Common situations: Users reusing high-throughput producer properties with a low-latency mode.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- SolaceIO.Write: Overriding JCSMP properties for testing…
- SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to…
- SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to
- SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to
- A 'datagen' table requires either 'rows-per-second' (for…
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/40f113d05df53137.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java:245
LOG.warn(
"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since"
+ " HIGHER_THROUGHPUT mode was selected",
BATCHED_PUB_ACK_WINDOW);
}
// Override the properties
// Use a dedicated thread for callbacks, increase the ack window size
props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, false);
props.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, BATCHED_PUB_ACK_WINDOW);
LOG.info(
"SolaceIO.Write: Using HIGHER_THROUGHPUT mode, MESSAGE_CALLBACK_ON_REACTOR is FALSE,"
+ " PUB_ACK_WINDOW_SIZE is {}",
BATCHED_PUB_ACK_WINDOW);
break;
case LOWER_LATENCY:
// Check if it was set by user, show override warning
if (msgCbProp != null && !msgCbProp) {
LOG.warn(
"SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to true since"
+ " LOWER_LATENCY mode was selected");
}
if ((ackWindowSize != null && ackWindowSize != STREAMING_PUB_ACK_WINDOW)) {
LOG.warn(
"SolaceIO.Write: Overriding PUB_ACK_WINDOW_SIZE to {} since"
+ " LOWER_LATENCY mode was selected",
STREAMING_PUB_ACK_WINDOW);
}
// Override the properties
// Send from the same thread where the produced is being called. This offers the lowest
// latency, but a low throughput too.
props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, true);
props.setProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE, STREAMING_PUB_ACK_WINDOW);
LOG.info(
"SolaceIO.Write: Using LOWER_LATENCY mode, MESSAGE_CALLBACK_ON_REACTOR is TRUE,"View on GitHub (pinned to 12126d8942)