apache/skywalking · error · IllegalExpressionException
Series No Labeled, left and right series value size not equa
Error message
Series No Labeled, left and right series value size not equal.
What it means
In LROp.seriesNoLabeled, after both non-labeled series are non-empty, the number of data points in the left series' first MQEValues must equal the right's. Values are paired purely by index (for loop over i), so unequal lengths make the pairing meaningless and the exception is thrown.
Source
Thrown at oap-server/mqe-rt/src/main/java/org/apache/skywalking/mqe/rt/operation/LROp.java:216
mqeValue.getDoubleValue(), opType
);
mqeValue.setDoubleValue(newValue);
}
}
}
return manyResult;
}
private static ExpressionResult seriesNoLabeled(ExpressionResult seriesLeft,
ExpressionResult seriesRight,
int opType, LROp calculate) throws IllegalExpressionException {
if (seriesLeft.getResults().isEmpty() || seriesRight.getResults().isEmpty()) {
throw new IllegalExpressionException("Series No Labeled, left or right result is empty.");
}
MQEValues mqeValuesL = seriesLeft.getResults().get(0);
MQEValues mqeValuesR = seriesRight.getResults().get(0);
if (mqeValuesL.getValues().size() != mqeValuesR.getValues().size()) {
throw new IllegalExpressionException("Series No Labeled, left and right series value size not equal.");
}
for (int i = 0; i < mqeValuesL.getValues().size(); i++) {
//clean metric info
MQEValue valueL = mqeValuesL.getValues().get(i);
MQEValue valueR = mqeValuesR.getValues().get(i);
if (valueL.isEmptyValue() || valueR.isEmptyValue()) {
valueL.setEmptyValue(true);
continue;
}
//time should be mapped
double newValue = calculate.apply(valueL.getDoubleValue(), valueR.getDoubleValue(), opType);
mqeValuesL.getValues().get(i).setDoubleValue(newValue);
}
return seriesLeft;
}
private static ExpressionResult seriesLabeledWithNoLabeled(ExpressionResult seriesLeft,View on GitHub (pinned to 102af09b4a)
Solutions
- Query both operands alone and compare results[0].values sizes to find which series is shorter/longer
- Use the same step and duration for both metrics in the expression
- Pick metrics with identical down-sampling and reporting cadence, or fill gaps via aggregation levels that guarantee aligned buckets
- If alignment cannot be guaranteed, compute the operation client-side after fetching both series, aligning on timestamp
Example fix
// before query: metric_a + metric_b // a: step=MINUTE points=60, b: step=HOUR points=1 // after (same step on both sides) query: metric_a + metric_b // with query step=MINUTE and both metrics minute-downsampled
Defensive patterns
Strategy: validation
Validate before calling
boolean sameSize = l.getResults().get(0).getValues().size()
== r.getResults().get(0).getValues().size(); Try / catch
catch (IllegalExpressionException e) { /* compare point counts of each operand to locate the mismatch */ } Prevention
- Always use the same step and duration for both sides of a series-series expression
- Compare metrics with identical down-sampling and reporting cadence
- Align client-side on timestamps when server-side index pairing is too strict
When it happens
Trigger: 'seriesA op seriesB' where both return data but with different point counts — typically because the two metrics were queried with different step/duration, one series has missing buckets, or the underlying metrics have different retention/down-sampling.
Common situations: Comparing metrics of different down-sampling (day vs hour) or different step in one expression; one metric missing time buckets because it was reported intermittently; OAP metrics TTL differences between the two metrics; mixed B08 vs B10 metrics where one has gaps.
Related errors
- Series No Labeled, left or right result is empty.
- Series Labeled with No Labeled, no labeled result is empty.
- Series Labeled with No Labeled, left and right series value
- Series No Labeled with Labeled, no labeled result is empty.
- Series No Labeled with Labeled, left and right series value
AI-assisted analysis of apache/skywalking@102af09b4a (2026-08-14).
Data as JSON: /api/errors/7b4b043eb6e91b2c.
Report an issue: GitHub.