{"record":{"id":"e9572c0a5d2f6313","repo":"apache/seatunnel","slug":"system-placeholders-cannot-be-used-incorrect-conf","errorCode":null,"errorMessage":"System placeholders cannot be used. Incorrect config parameter: ","messagePattern":"System placeholders cannot be used\\. Incorrect config parameter: ","errorType":"validation","errorClass":"ConfigCheckException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigBuilder.java","lineNumber":261,"sourceCode":"            throw e;\n        } catch (Exception warn) {\n            log.warn(\n                    \"Loading config failed with spi {}, fallback to HOCON loader.\",\n                    configAdapter.getClass().getName());\n            return ofInner(filePath, variables);\n        }\n    }\n\n    private static Config backfillUserVariables(Config config, List<String> variables) {\n        if (variables != null) {\n            variables.stream()\n                    .filter(Objects::nonNull)\n                    .map(variable -> variable.split(\"=\", 2))\n                    .filter(pair -> pair.length == 2)\n                    .peek(\n                            pair -> {\n                                if (TablePlaceholder.isSystemPlaceholder(pair[0])) {\n                                    throw new ConfigCheckException(\n                                            \"System placeholders cannot be used. Incorrect config parameter: \"\n                                                    + pair[0]);\n                                }\n                            })\n                    .forEach(pair -> System.setProperty(pair[0], pair[1]));\n            Config systemConfig =\n                    Parseable.newProperties(\n                                    System.getProperties(),\n                                    ConfigParseOptions.defaults()\n                                            .setOriginDescription(\"system properties\"))\n                            .parse()\n                            .toConfig();\n\n            Config resolvedConfig =\n                    config.resolveWith(\n                            systemConfig, ConfigResolveOptions.defaults().setAllowUnresolved(true));\n\n            Map<String, Object> configMap = resolvedConfig.root().unwrapped();","sourceCodeStart":243,"sourceCodeEnd":279,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigBuilder.java#L243-L279","documentation":"ConfigBuilder.backfillUserVariables parses user-supplied -D style variable pairs and throws ConfigCheckException when a key is one of SeaTunnel's reserved system placeholders (e.g. table/schema related system variables). System placeholders are managed internally and cannot be overridden by users.","triggerScenarios":"Launching a job with variables like `--variable table_name=...` or -D key=value where key matches TablePlaceholder.isSystemPlaceholder, e.g. using reserved table placeholder names as custom variable names.","commonSituations":"Users name a custom variable the same as a built-in system placeholder, or copy example commands that accidentally use reserved keys.","solutions":["Rename the user variable to a non-reserved name and update its usage in the config","Check TablePlaceholder for the list of reserved system placeholder names","Remove the offending variable if it duplicates a value SeaTunnel supplies automatically"],"exampleFix":"// before\nseatunnel.sh --config job.conf -i table_name=mytable\n// after\nseatunnel.sh --config job.conf -i src_table_name=mytable  # and use ${src_table_name} in job.conf","handlingStrategy":"validation","validationCode":"if (TablePlaceholder.isSystemPlaceholder(key)) throw new IllegalArgumentException(\"Reserved placeholder: \" + key);","typeGuard":null,"tryCatchPattern":"try { ConfigBuilder.of(args); } catch (ConfigCheckException e) { log.error(\"Variable rejected: {}\", e.getMessage()); }","preventionTips":["Prefix user variables with a custom namespace","Consult TablePlaceholder for reserved names","Do not name variables table_name/table_schema or other system placeholder keys"],"tags":["config","placeholders","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}