{"record":{"id":"04643bad6011144b","repo":"prestodb/presto","slug":"unknown-property-at-line-s-s-s","errorCode":null,"errorMessage":"Unknown property at line %s:%s: %s","messagePattern":"Unknown property at line (.+?):(.+?): (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-file-session-property-manager/src/main/java/com/facebook/presto/session/file/FileSessionPropertyManager.java","lineNumber":65,"sourceCode":"    {\n        requireNonNull(config, \"config is null\");\n\n        Path configurationFile = config.getConfigFile().toPath();\n        try {\n            sessionMatchSpecs = ImmutableList.copyOf(CODEC.fromJson(Files.readAllBytes(configurationFile)));\n        }\n        catch (IOException e) {\n            throw new UncheckedIOException(e);\n        }\n        catch (IllegalArgumentException e) {\n            Throwable cause = e.getCause();\n            if (cause instanceof UnrecognizedPropertyException) {\n                UnrecognizedPropertyException ex = (UnrecognizedPropertyException) cause;\n                String message = format(\"Unknown property at line %s:%s: %s\",\n                        ex.getLocation().getLineNr(),\n                        ex.getLocation().getColumnNr(),\n                        ex.getPropertyName());\n                throw new IllegalArgumentException(message, e);\n            }\n            if (cause instanceof JsonMappingException) {\n                // remove the extra \"through reference chain\" message\n                if (cause.getCause() != null) {\n                    cause = cause.getCause();\n                }\n                throw new IllegalArgumentException(cause.getMessage(), e);\n            }\n            throw e;\n        }\n    }\n\n    @Override\n    protected List<SessionMatchSpec> getSessionMatchSpecs()\n    {\n        return sessionMatchSpecs;\n    }\n}","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-file-session-property-manager/src/main/java/com/facebook/presto/session/file/FileSessionPropertyManager.java#L47-L83","documentation":"FileSessionPropertyManager parses a session-properties JSON config file with Jackson. When the JSON contains a property name that is not recognized by the session property configuration class, Jackson raises UnrecognizedPropertyException, which is wrapped into an IllegalArgumentException with the file location (line:column) and the unknown property name. This fails fast on typos or stale config keys.","triggerScenarios":"Loading a session property manager config file containing an unrecognized key, e.g. \"query_max-run_time\" instead of \"query_max_run_time\" or a property that no longer exists after an upgrade.","commonSituations":"Typos in property names in session.properties-style JSON; config copied from an older Presto version where the property was renamed or removed; copy-pasted properties from documentation of a different component.","solutions":["Rename the unknown property in the config file to a valid session property name (check the line:column in the message)","Check the valid property names for your Presto version's session property manager class","If the property is legitimately new, upgrade Presto to a version that recognizes it"],"exampleFix":"// before (config JSON)\n{\"query_max-run-time\": \"100m\"}\n// after\n{\"query_max_run_time\": \"100m\"}","handlingStrategy":"validation","validationCode":"// Validate config keys before loading\nSet<String> valid = Set.of(\"query_max_run_time\", \"query_max_memory\", ...);\nfor (String key : jsonConfig.keySet()) {\n  if (!valid.contains(key)) throw new IllegalArgumentException(\"Unknown property: \" + key);\n}","typeGuard":"boolean isKnownProperty(String key) { return KNOWN_SESSION_PROPERTIES.contains(key); }","tryCatchPattern":"try { manager = new FileSessionPropertyManager(configFile); }\ncatch (IllegalArgumentException e) {\n  log.error(\"Session property config error: \" + e.getMessage()); // includes line:column and property\n  throw new ConfigValidationException(e);\n}","preventionTips":["Validate config files against the current version's property list in CI","Diff config files against upstream examples after every Presto upgrade","Use snake_case exact property names — hyphens are not accepted"],"tags":["json","config","jackson","session-properties"],"backgroundTag":"unknown-config-property","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}