{"record":{"id":"f7ceeb9954aac297","repo":"conductor-oss/conductor","slug":"poll-time-must-be-greater-than-0-ms","errorCode":null,"errorMessage":"Poll time must be greater than 0 ms","messagePattern":"Poll time must be greater than 0 ms","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueue.java","lineNumber":92,"sourceCode":"            boolean useExchange,\n            AMQPSettings settings,\n            AMQPRetryPattern retrySettings,\n            int batchSize,\n            int pollTimeInMS) {\n        if (factory == null) {\n            throw new IllegalArgumentException(\"Connection factory is undefined\");\n        }\n        if (addresses == null || addresses.length == 0) {\n            throw new IllegalArgumentException(\"Addresses are undefined\");\n        }\n        if (settings == null) {\n            throw new IllegalArgumentException(\"Settings are undefined\");\n        }\n        if (batchSize <= 0) {\n            throw new IllegalArgumentException(\"Batch size must be greater than 0\");\n        }\n        if (pollTimeInMS <= 0) {\n            throw new IllegalArgumentException(\"Poll time must be greater than 0 ms\");\n        }\n        this.useExchange = useExchange;\n        this.settings = settings;\n        this.batchSize = batchSize;\n        this.amqpConnection = AMQPConnection.getInstance(factory, addresses, retrySettings);\n        this.retrySettings = retrySettings;\n        this.setPollTimeInMS(pollTimeInMS);\n    }\n\n    @Override\n    public Observable<Message> observe() {\n        Observable.OnSubscribe<Message> onSubscribe = null;\n        // This will enabled the messages to be processed one after the other as per the\n        // observable next behavior.\n        if (settings.isSequentialProcessing()) {\n            LOGGER.info(\"Subscribing for the message processing on schedule basis\");\n            receiveMessages();\n            onSubscribe =","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueue.java#L74-L110","documentation":"Constructor guard on AMQPObservableQueue: pollTimeInMS <= 0. pollTimeInMS drives the Observable.interval schedule used in sequential-processing mode, so a non-positive value is rejected. The Builder computes it as (int) properties.getPollTimeDuration().toMillis().","triggerScenarios":"Constructing the queue with pollTimeInMS of 0 or negative; the Builder used because properties.getPollTimeDuration() resolved to a non-positive millisecond value.","commonSituations":"The poll-time property is unset or configured with a duration that truncates to 0ms; a bad duration unit in config.","solutions":["Set a positive poll-time duration in AMQPEventQueueProperties (e.g. 100ms or more).","Confirm the duration unit in config is correct so toMillis() is positive.","If constructing directly, pass an explicit positive pollTimeInMS."],"exampleFix":"# before: poll time truncates to 0ms -> constructor rejects\nconductor.amqp.pollTimeDuration=0ms\n\n# after: set a positive poll interval\nconductor.amqp.pollTimeDuration=100ms","handlingStrategy":"validation","validationCode":"if (pollTimeInMS <= 0) {\n    throw new IllegalArgumentException(\n        \"pollTime must be positive; check conductor.amqp.pollTimeDuration\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set a positive pollTimeDuration in AMQPEventQueueProperties.","Confirm the duration unit so toMillis() is positive (avoid units that truncate to 0).","Validate the duration at startup."],"tags":["amqp","config","validation"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}