{"record":{"id":"b42d1c952b42e412","repo":"apache/seatunnel","slug":"connector-jar-ha-storage-type-must-in-localfil","errorCode":null,"errorMessage":"${CONNECTOR_JAR_HA_STORAGE_TYPE} must in [localfile, hdfs]","messagePattern":"(.+?) must in \\[localfile, hdfs\\]","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/YamlSeaTunnelDomConfigProcessor.java","lineNumber":515,"sourceCode":"            } else {\n                LOGGER.warning(\"Unrecognized element: \" + name);\n            }\n        }\n        return connectorJarStorageConfig;\n    }\n\n    private ConnectorJarHAStorageConfig parseConnectorJarHAStorageConfig(\n            Node connectorJarHAStorageConfigNode) {\n        ConnectorJarHAStorageConfig connectorJarHAStorageConfig = new ConnectorJarHAStorageConfig();\n        for (Node node : childElements(connectorJarHAStorageConfigNode)) {\n            String name = cleanNodeName(node);\n            if (ServerConfigOptions.MasterServerConfigOptions.CONNECTOR_JAR_HA_STORAGE_TYPE\n                    .key()\n                    .equals(name)) {\n                String type = getTextContent(node);\n                if (StringUtils.isNotBlank(type)\n                        && !Arrays.asList(\"localfile\", \"hdfs\").contains(type)) {\n                    throw new IllegalArgumentException(\n                            ServerConfigOptions.MasterServerConfigOptions\n                                            .CONNECTOR_JAR_HA_STORAGE_TYPE\n                                    + \" must in [localfile, hdfs]\");\n                }\n                connectorJarHAStorageConfig.setType(type);\n            } else if (ServerConfigOptions.MasterServerConfigOptions\n                    .CONNECTOR_JAR_HA_STORAGE_PLUGIN_CONFIG\n                    .key()\n                    .equals(name)) {\n                Map<String, String> connectorJarHAStoragePluginConfig =\n                        parseConnectorJarHAStoragePluginConfig(node);\n                connectorJarHAStorageConfig.setStoragePluginConfig(\n                        connectorJarHAStoragePluginConfig);\n            } else {\n                LOGGER.warning(\"Unrecognized element: \" + name);\n            }\n        }\n        return connectorJarHAStorageConfig;","sourceCodeStart":497,"sourceCodeEnd":533,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/YamlSeaTunnelDomConfigProcessor.java#L497-L533","documentation":"Thrown by the Zeta master node config parser when the 'connector_jar_ha_storage_type' option is present but its value is not one of the two supported HA storage backends, 'localfile' or 'hdfs'. The parser validates the raw config string against a whitelist before assigning it to the connector-jar HA storage configuration, failing fast with an IllegalArgumentException on any other value.","triggerScenarios":"Starting a Zeta master node with seatunnel.yaml containing connector_jar_ha_storage_type set to a misspelled or unsupported value (e.g. 'LocalFile', 's3', 'oss', or a trailing space).","commonSituations":"Users copy HDFS/S3 examples from other SeaTunnel options and assume other storage plugins work here; typos or case-mismatched values like 'HDFS' instead of 'hdfs'.","solutions":["Set connector_jar_ha_storage_type to exactly 'localfile' or 'hdfs' (lowercase) in seatunnel.yaml.","Remove the option entirely to fall back to the default storage type if HA connector-jar storage is not needed.","If HDFS storage is intended, verify the paired connector-jar-storage HDFS options (fs default name, etc.) are also configured."],"exampleFix":"# before\nconnector_jar_ha_storage_type = HDFS\n# after\nconnector_jar_ha_storage_type = hdfs","handlingStrategy":"validation","validationCode":"Set<String> allowed = Set.of(\"localfile\", \"hdfs\");\nString v = yaml.getString(\"connector_jar_ha_storage_type\");\nif (v != null && !allowed.contains(v)) throw new IllegalArgumentException(\"connector_jar_ha_storage_type must be localfile or hdfs, got: \" + v);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Copy option values only from official docs/examples, keeping lowercase exact spelling.","Validate seatunnel.yaml against the documented ServerConfigOptions before starting the cluster.","Keep a version-controlled seatunnel.yaml and review diffs after upgrades."],"tags":["config","zeta-engine","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}