prestodb/presto · error · IllegalArgumentException
Unknown property at line %s:%s: %s
Error message
Unknown property at line %s:%s: %s
What it means
FileResourceGroupConfigurationManager catches Jackson's UnrecognizedPropertyException while deserializing resource-groups.json and rethrows it as IllegalArgumentException with line/column and the offending property name, so typos in JSON keys fail loudly instead of being silently ignored.
Source
Thrown at presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/FileResourceGroupConfigurationManager.java:73
super(memoryPoolManager);
requireNonNull(config, "config is null");
ManagerSpec managerSpec;
try {
managerSpec = CODEC.fromJson(Files.readAllBytes(Paths.get(config.getConfigFile())));
}
catch (IOException e) {
throw new UncheckedIOException(e);
}
catch (IllegalArgumentException e) {
Throwable cause = e.getCause();
if (cause instanceof UnrecognizedPropertyException) {
UnrecognizedPropertyException ex = (UnrecognizedPropertyException) cause;
String message = format("Unknown property at line %s:%s: %s",
ex.getLocation().getLineNr(),
ex.getLocation().getColumnNr(),
ex.getPropertyName());
throw new IllegalArgumentException(message, e);
}
if (cause instanceof JsonMappingException) {
// remove the extra "through reference chain" message
if (cause.getCause() != null) {
cause = cause.getCause();
}
throw new IllegalArgumentException(cause.getMessage(), e);
}
throw e;
}
this.rootGroups = managerSpec.getRootGroups();
this.cpuQuotaPeriod = managerSpec.getCpuQuotaPeriod();
validateRootGroups(managerSpec);
this.selectors = buildSelectors(managerSpec);
}
@OverrideView on GitHub (pinned to 55bb57d202)
Solutions
- Fix or remove the property named in the error at the reported line/column
- Check the exact property names supported by ResourceGroupSpec/SelectorSpec for your Presto version
- Validate the JSON against the current schema before deploying
Example fix
// before (resource-groups.json) "maxQueued": 100 // after "maxQueuedQueries": 100
Defensive patterns
Strategy: validation
Validate before calling
// Validate JSON keys before loading
JsonNode root = mapper.readTree(configJson);
Set<String> allowed = Set.of("rootGroups", "selectors", "subgroups", "maxQueuedQueries", "softMemoryLimit", "hardConcurrencyLimit", "maxRunning", "schedulingPolicy", "schedulingWeight", "jmxExport", "workersPerQueryLimit");
root.fieldNames().forEachRemaining(f -> { if (!allowed.contains(f)) throw new IllegalArgumentException("Unknown property: " + f); }); Try / catch
try { new FileResourceGroupConfigurationManager(...); } catch (IllegalArgumentException e) { log.error("Bad resource group config: " + e.getMessage()); } Prevention
- JSON-schema-validate resource-groups.json in CI against your Presto version
- Copy property names only from official docs for the exact release
- Fail config pipeline on unknown keys (do not disable FAIL_ON_UNKNOWN_PROPERTIES)
When it happens
Trigger: resource-groups.json (or selectors file) contains a property not defined on the target spec class, e.g. 'maxQueued' instead of 'maxQueuedQueries'; config loaded at manager construction.
Common situations: Typos in JSON keys; using properties from a different Presto version or a different plugin's schema; copy-pasting config from documentation of an incompatible release.
Related errors
- ACCUMULO_TABLE_EXISTS
- Invalid JSON file '%s' for '%s'
- Selector refers to nonexistent group: %s
- Selector specifies an invalid query type: %s
- Ambiguous configuration for %s. Matches %s and %s
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/372e20548ea2cd74.
Report an issue: GitHub.