{"record":{"id":"f6222ae67b288f59","repo":"theonedev/onedev","slug":"unknown-job-parameter","errorCode":null,"errorMessage":"Unknown job parameter (","messagePattern":"Unknown job parameter \\(","errorType":"validation","errorClass":"ValidationException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/buildspec/param/ParamUtils.java","lineNumber":103,"sourceCode":"\t\t\t\t\t\tdisplayValue.add(each);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdisplayValue = paramValue;\n\t\t\t}\n\t\t\tString errorMessage = String.format(\"Error validating param value (param: %s, value: %s, error message: %s\", \n\t\t\t\t\tparamName, displayValue, e.getMessage() != null? e.getMessage(): e.getClass());\n\t\t\tthrow new ValidationException(errorMessage);\n\t\t}\n\t}\n\n\tprivate static void validateParamNames(Collection<String> paramSpecNames, Collection<String> paramNames) {\n\t\tfor (String paramSpecName: paramSpecNames) {\n\t\t\tif (!paramNames.contains(paramSpecName))\n\t\t\t\tthrow new ValidationException(\"Missing job parameter (\" + paramSpecName + \")\");\n\t\t}\n\t\tfor (String paramName: paramNames) {\n\t\t\tif (!paramSpecNames.contains(paramName))\n\t\t\t\tthrow new ValidationException(\"Unknown job parameter (\" + paramName + \")\");\n\t\t}\n\t}\n\t\n\tpublic static void validateParamMap(List<ParamSpec> paramSpecs, Map<String, List<String>> paramMap) {\n\t\tMap<String, ParamSpec> paramSpecMap = ParamUtils.getParamSpecMap(paramSpecs);\n\t\tvalidateParamNames(paramSpecMap.keySet(), paramMap.keySet());\n\t\tfor (Map.Entry<String, List<String>> entry: paramMap.entrySet()) {\n\t\t\tif (entry.getValue() != null) {\n\t\t\t\tParamSpec paramSpec = Preconditions.checkNotNull(paramSpecMap.get(entry.getKey()));\n\t\t\t\tvalidateParamValue(paramSpec, entry.getKey(), entry.getValue());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tpublic static Map<String, ParamSpec> getParamSpecMap(List<ParamSpec> paramSpecs) {\n\t\tMap<String, ParamSpec> paramSpecMap = new LinkedHashMap<>();\n\t\tfor (ParamSpec paramSpec: paramSpecs)\n\t\t\tparamSpecMap.put(paramSpec.getName(), paramSpec);","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/buildspec/param/ParamUtils.java#L85-L121","documentation":"Thrown by ParamUtils.validateParamNames when a supplied parameter name does not correspond to any parameter declared in the job's param specs. OneDev rejects unexpected parameters to avoid silently ignoring typos.","triggerScenarios":"Calling validateParamMatrix or validateParamMap with a param map/matrix key that is not in paramSpecs — e.g. passing 'verison' when the job defines 'version'.","commonSituations":"Typo in parameter name; job spec was edited to remove/rename a param while triggers or dependent jobs still pass the old name; copy-pasted param blocks between jobs.","solutions":["Fix the parameter name in the caller to match a declared job parameter","Remove the extraneous parameter from the map/matrix","Update the job's param specs if the parameter is legitimately new"],"exampleFix":"// before\nparams: {verison: \"1.0\"}\n// after\nparams: {version: \"1.0\"}","handlingStrategy":"validation","validationCode":"Set<String> specNames = paramSpecs.stream().map(ParamSpec::getName).collect(Collectors.toSet());\nparamMap.keySet().retainAll(specNames); // or fail fast on unknown keys","typeGuard":null,"tryCatchPattern":"try { ParamUtils.validateParamMap(specs, paramMap); } catch (ValidationException e) { if (e.getMessage().startsWith(\"Unknown job parameter\")) { /* fix or drop that key */ } }","preventionTips":["Keep param names in triggers/dependent jobs in sync with the job spec","Use constants or autocompletion for param names instead of raw strings","Run buildspec validation in CI to catch drift"],"tags":["validation","params","buildspec"],"backgroundTag":"invalid-config-value","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}