{"record":{"id":"35bdb26a1a9ecd1a","repo":"apache/beam","slug":"invalid-debezium-connection-property-expected-key-value","errorCode":null,"errorMessage":"Invalid Debezium connection property ''. Expected key=value format.","messagePattern":"Invalid Debezium connection property ''\\. Expected key=value format\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumReadSchemaTransformProvider.java","lineNumber":242,"sourceCode":"    public void validate() {\n      if (getHost().isEmpty()) {\n        throw new IllegalArgumentException(\"host must not be empty.\");\n      }\n\n      if (getPort() <= 0 || getPort() > 65535) {\n        throw new IllegalArgumentException(\n            \"port must be between 1 and 65535, but was \" + getPort() + \".\");\n      }\n\n      if (getTable().isEmpty()) {\n        throw new IllegalArgumentException(\"table must not be empty.\");\n      }\n\n      List<String> connectionProperties = getDebeziumConnectionProperties();\n      if (connectionProperties != null) {\n        for (String property : connectionProperties) {\n          if (property == null || property.indexOf('=') <= 0) {\n            throw new IllegalArgumentException(\n                \"Invalid Debezium connection property '\"\n                    + property\n                    + \"'. Expected key=value format.\");\n          }\n        }\n      }\n    }\n\n    public static Builder builder() {\n      return new AutoValue_DebeziumReadSchemaTransformProvider_DebeziumReadSchemaTransformConfiguration\n          .Builder();\n    }\n\n    @AutoValue.Builder\n    public abstract static class Builder {\n      public abstract Builder setMaxNumberOfRecords(@Nullable Integer maxNumberOfRecords);\n\n      public abstract Builder setMaxTimeToRun(@Nullable Long maxTimeToRun);","sourceCodeStart":224,"sourceCodeEnd":260,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumReadSchemaTransformProvider.java#L224-L260","documentation":"Each entry in debeziumConnectionProperties must be in key=value format; validate() rejects null entries or strings whose first '=' is at index <= 0 (no key, or no '=' at all) with IllegalArgumentException identifying the offending property.","triggerScenarios":"Passing entries like \"snapshot.mode\" (missing '='), \"=value\" (empty key), or null in the getDebeziumConnectionProperties() list.","commonSituations":"YAML lists accidentally splitting on ':' or copying driver properties in '-Dkey=value' style, trailing whitespace making key empty, or programmatic config built from a map joined incorrectly.","solutions":["Ensure every property is formatted as key=value, e.g. \"snapshot.mode=when_needed\".","Trim each entry and remove empty strings or nulls from the list before building the transform.","Parse properties from files using Properties.load rather than naive string splitting.","Validate the list in a pre-flight check: every entry contains '=' at position > 0."],"exampleFix":"// before\nprops: [\"snapshot.mode\", \"decimal.handling.mode=string\"] // first entry invalid\n// after\nprops: [\"snapshot.mode=when_needed\", \"decimal.handling.mode=string\"]","handlingStrategy":"validation","validationCode":"for (String p : props) {\n  if (p == null || p.indexOf('=') <= 0) throw new IllegalArgumentException(\"Property '\" + p + \"' must be key=value\");\n}","typeGuard":"static boolean isKeyValueProperty(String p) {\n  return p != null && p.indexOf('=') > 0;\n}","tryCatchPattern":null,"preventionTips":["Write extra Debezium properties strictly as key=value strings.","Trim entries and filter out blanks/nulls before building the config.","Load properties with java.util.Properties to avoid manual splitting bugs."],"tags":["java","apache-beam","debezium","config-validation","format"],"backgroundTag":"invalid-argument-format","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}