apache/cassandra · error · InvalidRequestException

e.getMessage() (InvalidRequestException wrapping…

Error message

e.getMessage() (InvalidRequestException wrapping MarshalException)

What it means

In Marker.bindAndGet, a bound-variable payload failed receiver.type.validate with a MarshalException; the code rethrows it as an InvalidRequestException carrying e.getMessage(). Indicates the serialized bytes for the bind marker are not decodable as the receiver column's type during statement execution.

Solutions

  1. Supply a bound value whose serialized bytes validate against the column's type
  2. Verify client-side serialization matches the schema type (int vs varint, timestamp format, etc.)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/java/org/apache/cassandra/cql3/terms/Marker.java:121 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at src/java/org/apache/cassandra/cql3/terms/Marker.java:121

        {
            ByteBuffer bytes = context.options().getValue(bindIndex);
            if (bytes == null)
                return null;

            if (bytes == ByteBufferUtil.UNSET_BYTE_BUFFER)
                return ByteBufferUtil.UNSET_BYTE_BUFFER;

            if (receiver.type instanceof MultiElementType<?>)
            {
                return MultiElements.Value.fromSerialized(bytes, (MultiElementType<?>) receiver.type).get();
            }

            receiver.type.validate(bytes);
            return bytes;
        }
        catch (MarshalException e)
        {
            throw new InvalidRequestException(e.getMessage(), e);
        }
    }

    public boolean isByteArrayGetSupported(FunctionContext context)
    {
        return context.options().isByteArrayValuesGetSupported();
    }

    /*
       Same logic as bind() but it returns byte[] instead of ByteBuffer and there is no Value wrapper usage
     */
    @Override
    public byte[] bindAndGetByteArray(FunctionContext context) throws InvalidRequestException
    {
        try
        {
            byte[] bytes = context.options().getByteArrayValues()[bindIndex];
            if (bytes == null)

View on GitHub (pinned to 88fd0f6a0e)