{"record":{"id":"ad8e475cb5f35cf4","repo":"apache/seatunnel","slug":"option-operation-timeout-ms-must-be-less-than-ha","errorCode":null,"errorMessage":"Option 'operation_timeout_ms' must be less than half of visibility_timeout_seconds","messagePattern":"Option 'operation_timeout_ms' must be less than half of visibility_timeout_seconds","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/config/AzureQueueSourceConfig.java","lineNumber":109,"sourceCode":"                || visibilityTimeoutSeconds > MAX_VISIBILITY_TIMEOUT_SECONDS) {\n            throw new IllegalArgumentException(\n                    \"Option 'visibility_timeout_seconds' must be between 1 and 604800\");\n        }\n        if (pollIntervalMillis <= 0) {\n            throw new IllegalArgumentException(\n                    \"Option 'poll_interval_ms' must be greater than zero\");\n        }\n        if (maxInFlightMessages < batchSize) {\n            throw new IllegalArgumentException(\n                    \"Option 'max_in_flight_messages' must be greater than or equal to batch_size\");\n        }\n        if (operationTimeoutMillis <= 0) {\n            throw new IllegalArgumentException(\n                    \"Option 'operation_timeout_ms' must be greater than zero\");\n        }\n        long visibilityTimeoutMillis = visibilityTimeoutSeconds * 1_000L;\n        if (operationTimeoutMillis >= visibilityTimeoutMillis / 2) {\n            throw new IllegalArgumentException(\n                    \"Option 'operation_timeout_ms' must be less than half of visibility_timeout_seconds\");\n        }\n    }\n}\n","sourceCodeStart":91,"sourceCodeEnd":114,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/config/AzureQueueSourceConfig.java#L91-L114","documentation":"validate() requires operation_timeout_ms to be strictly less than half of visibility_timeout_seconds (converted to millis). The operation timeout is how long a receive call waits; if it approaches half the visibility window, messages can be received near (or after) the point where safe processing/visibility renewal is impossible. Thrown as IllegalArgumentException from from().","triggerScenarios":"from() called where operationTimeoutMillis >= visibilityTimeoutSeconds * 1000 / 2, e.g. operation_timeout_ms=60000 with visibility_timeout_seconds=60.","commonSituations":"Users raising the poll wait time without raising visibility_timeout_seconds, or copying timeout values between configs with different visibility settings.","solutions":["Lower operation_timeout_ms below visibility_timeout_seconds/2 (e.g. timeout 30000 for visibility 120)","Or increase visibility_timeout_seconds so it is more than twice operation_timeout_ms","Re-run the job after adjusting either option"],"exampleFix":"// before\noperation_timeout_ms = 60000\nvisibility_timeout_seconds = 60\n// after\noperation_timeout_ms = 30000\nvisibility_timeout_seconds = 120","handlingStrategy":"validation","validationCode":"if (operationTimeoutMs >= visibilityTimeoutSeconds * 1000L / 2) {\n    throw new IllegalArgumentException(\"operation_timeout_ms must be < visibility_timeout_seconds/2\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Tune operation_timeout_ms and visibility_timeout_seconds as a pair (timeout < half visibility)","Document the ratio constraint in team config templates","Validate configs in CI before job submission"],"tags":["config","validation","azure"],"backgroundTag":"conflicting-config-options","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}