apache/skywalking · error · IllegalArgumentException
{slot} value '{numText}' exceeds the supported range (must f
Error message
{slot} value '{numText}' exceeds the supported range (must fit in a Java int) What it means
IllegalArgumentException from MeterSystem.create(metricsName, functionName, ScopeType): the functionName is not present in the function register built at boot by scanning @MeterFunction classes under org.apache.skywalking. MAL scripts declare a function per metric value (avg, sum, max, min, rate...); an unknown name means the annotation's functionName() value and the script disagree, or the class carrying it never loaded.
Source
Thrown at oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/compiler/LALScriptParser.java:909
try {
return Long.parseLong(numText);
} catch (NumberFormatException e) {
throw new IllegalArgumentException(
slot + " value '" + numText + "' exceeds the supported range "
+ "(must fit in a Java long)");
}
}
/**
* Like {@link #parseStrictInteger} but additionally requires the value
* to fit in a Java {@code int}. Used by the {@code [index]} grammar
* slot, where silent narrowing of an oversized literal would wrap to a
* negative index instead of producing a clear error.
*/
private static int parseStrictInt(final String numText, final String slot) {
final long value = parseStrictInteger(numText, slot);
if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
throw new IllegalArgumentException(
slot + " value '" + numText + "' exceeds the supported range "
+ "(must fit in a Java int)");
}
return (int) value;
}
/**
* Parse a NUMBER literal text (which may carry an L/F/D suffix) as a Java double
* for use in {@link NumberConditionValue}. Suffix is stripped before parsing.
*/
private static double parseLiteralAsDouble(final String numText) {
String t = numText;
if (!t.isEmpty()) {
final char last = t.charAt(t.length() - 1);
if (last == 'L' || last == 'l' || last == 'F' || last == 'f'
|| last == 'D' || last == 'd') {
t = t.substring(0, t.length() - 1);
}View on GitHub (pinned to 102af09b4a)
Solutions
- Correct the function name in the MAL value definition to a known function (avg, sum, max, min, rate, etc.)
- If the function is a custom one, deploy the jar containing the @MeterFunction class where the OAP classloader scans it (org.apache.skywalking package)
- Align MAL rule files with the deployed OAP version's function set
Example fix
# before metricsMY_SERVICE: value: my_service_qps avgerage: true # typo # after metricsMY_SERVICE: value: my_service_qps avg: true
Defensive patterns
Strategy: validation
Validate before calling
// known built-in functions include: avg, sum, max, min, rate, percent, etc.
boolean known = Arrays.asList("avg","sum","max","min","rate").contains(functionName); Try / catch
catch (IllegalArgumentException e) { log.error("MAL rule rejected, unknown function: {}", e.getMessage()); /* fail rule load, keep OAP up */ } Prevention
- Spell-check function names in MAL YAML against the docs
- Keep MAL rule files versioned with the OAP release they target
When it happens
Trigger: A MAL rule using a function name that has no @MeterFunction(functionName=...) match — e.g. a typo ('averge'), a function only available in a newer OAP, or a custom function jar missing from the classpath.
Common situations: Hand-editing MAL YAML and misspelling the function keyword; upgrading MAL rules ahead of the OAP binary (or vice versa); forgetting to drop the custom meter-function plugin into oap-libs.
Related errors
- Unclosed interpolation in: {s}
- Load meter analyzer configs failed
- Unsupported extractor statement in LAL rule at line {sourceL
- {slot} value '{numText}' exceeds the supported range (must f
- Cannot parse interpolation expression: {expr}
AI-assisted analysis of apache/skywalking@102af09b4a (2026-08-14).
Data as JSON: /api/errors/06337cac9d2d1236.
Report an issue: GitHub.