apache/cassandra · error · InvalidRequestException

messageTemplate (caller-provided message template, 3 args)

Error message

messageTemplate (caller-provided message template, 3 args)

What it means

RequestValidations.checkTrue(boolean, String template, Object arg1, Object arg2, Object arg3) throws InvalidRequestException with a three-argument formatted message when the expression is false. Same guard family as the other checkTrue overloads in RequestValidations.

Source

Thrown at src/java/org/apache/cassandra/cql3/statements/RequestValidations.java:118

    /**
     * Checks that the specified expression is <code>true</code>. If not an {@code InvalidRequestException} will
     * be thrown.
     *
     * @param expression the expression to test
     * @param messageTemplate the template used to build the error message
     * @param arg1 the first message argument
     * @param arg2 the second message argument
     * @param arg3 the third message argument
     * @throws InvalidRequestException if the specified expression is {@code false}.
     */
    public static void checkTrue(boolean expression,
                                 String messageTemplate,
                                 Object arg1,
                                 Object arg2,
                                 Object arg3) throws InvalidRequestException
    {
        if (!expression)
            throw invalidRequest(messageTemplate, arg1, arg2, arg3);
    }

    /**
     * Checks that the specified collections is NOT <code>empty</code>.
     * If it is an {@code InvalidRequestException} will be thrown.
     *
     * @param collection the collection to test
     * @param messageTemplate the template used to build the error message
     * @param messageArg the message argument
     * @return the collection
     * @throws InvalidRequestException if the specified collection is <code>empty</code>.
     */
    public static <T extends Collection<E>, E> T checkNotEmpty(T collection,
                                                               String messageTemplate,
                                                               Object messageArg)
                                                               throws InvalidRequestException
    {
        checkTrue(!collection.isEmpty(), messageTemplate, messageArg);

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Read all three interpolated values in the message
  2. Fix the CQL statement so the condition holds (often correcting one of the three reported items is enough)
  3. Consult the docs for the feature mentioned in the message to learn the accepted forms

Example fix

// before
checkTrue(valid, "function %s requires %s args, got %s", fn, n, actual); // throws
// after
-- call sum(int_col) with exactly one int clustering column parameter
Defensive patterns

Strategy: try-catch

Try / catch

try { session.execute(stmt); }
catch (InvalidRequestException e) { throw new QueryValidationException(e.getMessage(), e); }

Prevention

When it happens

Trigger: Validation call sites interpolating three values where the checked condition is false during CQL statement validation.

Common situations: Complex multi-part preconditions failing, e.g. messages reporting function name, argument types and expected signature all at once.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/2bfc49b4cdb3ce95. Report an issue: GitHub.