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

  1. Correct the function name in the MAL value definition to a known function (avg, sum, max, min, rate, etc.)
  2. If the function is a custom one, deploy the jar containing the @MeterFunction class where the OAP classloader scans it (org.apache.skywalking package)
  3. 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

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


AI-assisted analysis of apache/skywalking@102af09b4a (2026-08-14). Data as JSON: /api/errors/06337cac9d2d1236. Report an issue: GitHub.