prestodb/presto · error · PrestoException
PROMETHEUS_UNKNOWN_ERROR
PROMETHEUS_UNKNOWN_ERROR
Error message
split URI invalid: ${e.getMessage()} What it means
Catch in getSplits' split construction: building the split URI from the generated time chunk and table metadata failed (malformed URI, illegal characters), and the error is re-raised with the underlying message embedded. Fires when the composed Prometheus query URL is invalid.
Source
Thrown at presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusSplitManager.java:202
PrometheusTableHandle tableHandle = layoutHandle.getTableHandle();
PrometheusTable table = prometheusClient.getTable(tableHandle.getSchemaName(), tableHandle.getTableName());
// this can happen if table is removed during a query
if (table == null) {
throw new TableNotFoundException(tableHandle.toSchemaTableName());
}
List<ConnectorSplit> splits = generateTimesForSplits(prometheusClock.now(), maxQueryRangeDuration, queryChunkSizeDuration, tableHandle)
.stream()
.map(time -> {
try {
return new PrometheusSplit(buildQuery(
prometheusURI,
time,
table.getName(),
queryChunkSizeDuration));
}
catch (URISyntaxException e) {
throw new PrestoException(PROMETHEUS_UNKNOWN_ERROR, "split URI invalid: " + e.getMessage());
}
}).collect(Collectors.toList());
return new FixedSplitSource(splits);
}
private static class EffectiveLimits
{
private final Instant upperBound;
private final java.time.Duration maxQueryRangeDuration;
/**
* If no upper bound is specified by the predicate, we use the time now() as the defaultUpperBound
* if predicate LOWER bound is set AND predicate UPPER bound is set:
* max duration = upper bound - lower bound
* effective upper bound = predicate upper bound
* if predicate LOWER bound is NOT set AND predicate UPPER bound is set:
* max duration = config max duration
* effective upper bound = predicate upper boundView on GitHub (pinned to 55bb57d202)
Solutions
- Inspect the embedded cause message for the bad URI component
- Check table/metric names for characters needing URL encoding
- Verify prometheus.uri and time parameters are well-formed
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at presto-prometheus/src/main/java/com/facebook/presto/plugin/prometheus/PrometheusSplitManager.java:202 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/898df78941ed8b3f.
Report an issue: GitHub.