{"record":{"id":"030c5ef6faf44f73","repo":"apache/beam","slug":"unknown-acknowledgemode-s","errorCode":null,"errorMessage":"Unknown AcknowledgeMode: %s","messagePattern":"Unknown AcknowledgeMode: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java","lineNumber":759,"sourceCode":"        if (configuredCode != null) {\n          return configuredCode;\n        }\n        String connectionClassName = this.connection.getClass().getName();\n        if (connectionClassName.contains(\"org.apache.activemq.ActiveMQConnection\")) {\n          return 4;\n        } else if (connectionClassName.contains(\"org.apache.qpid.jms\")) {\n          return 101;\n        } else if (connectionClassName.contains(\"org.apache.activemq.artemis\")) {\n          return 101;\n        } else {\n          throw new IllegalArgumentException(\n              String.format(\n                  \"Unknown JMS provider '%s' for INDIVIDUAL_ACKNOWLEDGE. \"\n                      + \"Please specify the code explicitly via Read#withIndividualAcknowledgeModeCode(int).\",\n                  connectionClassName));\n        }\n      } else {\n        throw new IllegalArgumentException(String.format(\"Unknown AcknowledgeMode: %s\", mode));\n      }\n    }\n\n    @Override\n    public boolean start() throws IOException {\n      Read<T> spec = source.spec;\n      ConnectionFactory connectionFactory = spec.getConnectionFactory();\n      try {\n        Connection connection;\n        if (spec.getUsername() != null) {\n          connection = connectionFactory.createConnection(spec.getUsername(), spec.getPassword());\n        } else {\n          connection = connectionFactory.createConnection();\n        }\n        connection.start();\n        this.connection = connection;\n        if (spec.getAutoScaler() == null) {\n          this.autoScaler = new DefaultAutoscaler();","sourceCodeStart":741,"sourceCodeEnd":777,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsIO.java#L741-L777","documentation":"JmsIO's UnboundedJmsReader maps a JmsIO AcknowledgeMode enum value to the underlying JMS session acknowledge mode. If the mode value falls outside the handled cases, the reader throws this IllegalArgumentException. It signals an internal enum dispatch failure, normally from a custom or newly added AcknowledgeMode not yet mapped.","triggerScenarios":"Instantiating an UnboundedJmsReader whose source spec has an AcknowledgeMode not covered by the switch/if chain (e.g. a null mode or a mode added in a newer JmsIO version running against an older mapper).","commonSituations":"Programmatic construction of Read specs where withAcknowledgeMode is called with a hand-built or null value; version mismatch between pipeline construction and runner classpath.","solutions":["Use one of the supported JmsIO.AcknowledgeMode values (AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE, INDIVIDUAL_ACKNOWLEDGE).","Verify all Beam SDK jar versions on the runner classpath match (no mixed io/jms module versions).","If the mode is null, check why withAcknowledgeMode was skipped or passed a null value."],"exampleFix":"// before\nRead<JmsRecord> r = JmsIO.<JmsRecord>read().withAcknowledgeMode(null);\n// after\nRead<JmsRecord> r = JmsIO.<JmsRecord>read().withAcknowledgeMode(JmsIO AcknowledgeMode.AUTO_ACKNOWLEDGE);","handlingStrategy":"type-guard","validationCode":"JmsIO.AcknowledgeMode mode = spec.getAcknowledgeMode();\nif (mode == null || !EnumSet.allOf(JmsIO.AcknowledgeMode.class).contains(mode)) {\n  throw new IllegalStateException(\"unsupported acknowledge mode: \" + mode);\n}","typeGuard":"boolean isSupportedMode(JmsIO.AcknowledgeMode m) {\n  return m == JmsIO.AcknowledgeMode.AUTO_ACKNOWLEDGE\n    || m == JmsIO.AcknowledgeMode.CLIENT_ACKNOWLEDGE\n    || m == JmsIO.AcknowledgeMode.DUPS_OK_ACKNOWLEDGE\n    || m == JmsIO.AcknowledgeMode.INDIVIDUAL_ACKNOWLEDGE;\n}","tryCatchPattern":"try { pipeline.run(); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith(\"Unknown AcknowledgeMode\")) { /* fix spec */ } throw e; }","preventionTips":["Only use documented JmsIO.AcknowledgeMode constants.","Keep Beam io/jms module versions consistent across construction and runner."],"tags":["jms","enum","internal"],"backgroundTag":"invalid-enum-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}