apache/seatunnel · error · IllegalArgumentException
Option 'operation_timeout_ms' must be greater than zero
Error message
Option 'operation_timeout_ms' must be greater than zero
What it means
AzureQueueSinkConfig.validate throws this when operation_timeout_ms is zero or negative. The Azure Queue client needs a positive timeout for API operations, otherwise sends would block or fail unpredictably.
Source
Thrown at seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/config/AzureQueueSinkConfig.java:77
.maxInFlight(config.get(AzureQueueStorageSinkOptions.MAX_IN_FLIGHT))
.operationTimeoutMillis(
config.get(AzureQueueStorageSinkOptions.OPERATION_TIMEOUT_MS))
.build();
sinkConfig.validate();
return sinkConfig;
}
private void validate() {
AzureQueueConfigValidator.validateClient(this);
if (format == MessageFormat.TEXT && fieldDelimiter.isEmpty()) {
throw new IllegalArgumentException("Option 'field_delimiter' cannot be empty");
}
if (maxInFlight <= 0) {
throw new IllegalArgumentException("Option 'max_in_flight' must be greater than zero");
}
if (operationTimeoutMillis <= 0) {
throw new IllegalArgumentException(
"Option 'operation_timeout_ms' must be greater than zero");
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Set operation_timeout_ms to a positive millisecond value (e.g. 60000)
- Remove the option to use the plugin default
- Verify the template variable supplying this value is populated
Example fix
// before operation_timeout_ms = 0 // after operation_timeout_ms = 60000
Defensive patterns
Strategy: validation
Validate before calling
java
if (operationTimeoutMs <= 0) {
operationTimeoutMs = 60_000;
} Try / catch
java
try {
AzureQueueSinkConfig.from(config);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("operation_timeout_ms")) {
log.error("operation_timeout_ms must be a positive millisecond value");
} else { throw e; }
} Prevention
- Keep 0-means-infinite out of timeout options; use large positive values instead
- Verify templated values resolve to real numbers before submit
- Unit-convert carefully (seconds vs milliseconds) when copying from other configs
When it happens
Trigger: Building AzureQueueSinkConfig via from() with operation_timeout_ms <= 0, e.g. operation_timeout_ms = 0 in config.
Common situations: User thought 0 disables the timeout; unit confusion (expected seconds, gave 0 ms); placeholder not substituted in a templated config.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- Option 'field_delimiter' cannot be empty
- Option 'max_in_flight' must be greater than zero
- Option 'visibility_timeout_seconds' must be between 1 and 60
- Option '${option}' cannot be blank
- Option '${valuesAndOptions[index + 1]}' is not valid for the
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/9d9f07b57ef97eec.
Report an issue: GitHub.