{"record":{"id":"54a9b31d57dd0941","repo":"risingwavelabs/risingwave","slug":"pubsub-ack-deadline-seconds-must-be-between-10-and","errorCode":null,"errorMessage":"pubsub.ack_deadline_seconds must be between 10 and 600","messagePattern":"pubsub\\.ack_deadline_seconds must be between 10 and 600","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/connector/src/source/google_pubsub/mod.rs","lineNumber":156,"sourceCode":"    type SplitEnumerator = PubsubSplitEnumerator;\n    type SplitReader = PubsubSplitReader;\n\n    const SOURCE_NAME: &'static str = GOOGLE_PUBSUB_CONNECTOR;\n}\n\nimpl crate::source::UnknownFields for PubsubProperties {\n    fn unknown_fields(&self) -> HashMap<String, String> {\n        self.unknown_fields.clone()\n    }\n}\n\nimpl PubsubProperties {\n    pub(crate) fn subscriber_config(&self) -> ConnectorResult<SubscriberConfig> {\n        let stream_ack_deadline_seconds = self\n            .ack_deadline_seconds\n            .unwrap_or(DEFAULT_ACK_DEADLINE_SECONDS);\n        if !(10..=600).contains(&stream_ack_deadline_seconds) {\n            bail!(\"pubsub.ack_deadline_seconds must be between 10 and 600\");\n        }\n\n        let max_outstanding_messages = self\n            .max_outstanding_messages\n            .unwrap_or(DEFAULT_MAX_OUTSTANDING_MESSAGES);\n        if max_outstanding_messages <= 0 {\n            bail!(\"pubsub.max_outstanding_messages must be greater than 0\");\n        }\n\n        let max_outstanding_bytes = self\n            .max_outstanding_bytes\n            .unwrap_or(DEFAULT_MAX_OUTSTANDING_BYTES);\n        if max_outstanding_bytes <= 0 {\n            bail!(\"pubsub.max_outstanding_bytes must be greater than 0\");\n        }\n\n        Ok(SubscriberConfig {\n            stream_ack_deadline_seconds,","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/source/google_pubsub/mod.rs#L138-L174","documentation":"The PubSub subscriber's ack deadline controls how long the streaming pull client waits before re-delivering unacknowledged messages. PubsubProperties::subscriber_config validates that ack_deadline_seconds (default DEFAULT_ACK_DEADLINE_SECONDS if unset) is within Google's allowed 10-600 second range and bails otherwise.","triggerScenarios":"Setting `pubsub.ack_deadline_seconds` to a value below 10 or above 600 in the source WITH clause; the check runs whenever subscriber_config() is called (e.g., from PubsubSplitReader/EnumeratorClient::new).","commonSituations":"Misreading the unit (thinking it's milliseconds and setting 500); copying an aggressive deadline from another connector; typos like 1000 or 5.","solutions":["Set pubsub.ack_deadline_seconds to an integer between 10 and 600, e.g. 60.","Remove the property entirely to use the default deadline.","If you need longer processing time, keep the deadline <= 600 and rely on message ack extension/retry semantics instead."],"exampleFix":"-- before\nWITH (connector = 'google_pubsub', pubsub.ack_deadline_seconds = 1000)\n-- after\nWITH (connector = 'google_pubsub', pubsub.ack_deadline_seconds = 300)","handlingStrategy":"validation","validationCode":"function ackDeadlineOk(v) {\n  return v === undefined || (Number.isInteger(v) && v >= 10 && v <= 600);\n}","typeGuard":"function isValidAckDeadline(v) {\n  return typeof v === \"number\" && Number.isInteger(v) && v >= 10 && v <= 600;\n}","tryCatchPattern":"if (!(ackDeadline >= 10 && ackDeadline <= 600)) {\n  throw new RangeError(\"pubsub.ack_deadline_seconds must be between 10 and 600\");\n}","preventionTips":["Remember the unit is seconds, Google's hard bounds are 10-600.","Prefer omitting the property and using the default unless you have a reason.","Validate integer ranges in config templates before deployment."],"tags":["gcp","pubsub","configuration","validation"],"backgroundTag":"value-out-of-range","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}