apache/beam · warning

SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to…

Error message

SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to false since HIGHER_THROUGHPUT mode was selected

What it means

In Solace publisher SessionService, when the write submission mode is HIGHER_THROUGHPUT the connector forcibly sets MESSAGE_CALLBACK_ON_REACTOR to false. If the user had explicitly set that JCSMP property to true, this WARN notifies them their value is overridden. It is informational, not a failure.

Solutions

  1. No action needed — the connector intentionally overrides the property.
  2. If callback-on-reactor behavior is required, switch the submission mode to LOWER_LATENCY instead.
  3. Remove the explicit MESSAGE_CALLBACK_ON_REACTOR=true setting to silence the warning.

Example fix

// before
props.setProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR, true);
SolaceIO.write().withSubmissionMode(SubmissionMode.HIGHER_THROUGHPUT);
// after: pick a mode consistent with the property
SolaceIO.write().withSubmissionMode(SubmissionMode.LOWER_LATENCY);
Defensive patterns

Strategy: validation

Validate before calling

Boolean msgCb = (Boolean) props.getIntegerProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR) != null;
if (mode == SubmissionMode.HIGHER_THROUGHPUT && userSetMessageCallbackOnReactor()) {
  LOG.warn("MESSAGE_CALLBACK_ON_REACTOR will be overridden by HIGHER_THROUGHPUT mode");
}

Prevention

When it happens

Trigger: Calling write().withSubmissionMode(HIGHER_THROUGHPUT) while having set JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR=true in the session properties.

Common situations: Users copying session properties tuned for lower-latency consumers into a high-throughput producer config.

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


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/b35b41fdf28adccc. Report an issue: GitHub.

Appendix: source

Thrown at sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/broker/SessionService.java:222

      // Make XMLProducer safe to access from several threads. This is the default value, setting
      // it just in case.
      props.setProperty(JCSMPProperties.PUB_MULTI_THREAD, true);
    }

    // PUB_ACK_WINDOW_SIZE heavily affects performance when publishing persistent
    // messages. It can be a value between 1 and 255. This is the batch size for the ack
    // received from Solace. A value of 1 will have the lowest latency, but a very low
    // throughput and a monumental backpressure.

    // Retrieve current values of the properties
    Boolean msgCbProp = props.getBooleanProperty(JCSMPProperties.MESSAGE_CALLBACK_ON_REACTOR);
    Integer ackWindowSize = props.getIntegerProperty(JCSMPProperties.PUB_ACK_WINDOW_SIZE);

    switch (mode) {
      case HIGHER_THROUGHPUT:
        // Check if it was set by user, show override warning
        if (msgCbProp != null && msgCbProp) {
          LOG.warn(
              "SolaceIO.Write: Overriding MESSAGE_CALLBACK_ON_REACTOR to false since"
                  + " HIGHER_THROUGHPUT mode was selected");
        }
        if ((ackWindowSize != null && ackWindowSize != BATCHED_PUB_ACK_WINDOW)) {
          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);

View on GitHub (pinned to 12126d8942)