theonedev/onedev · error · ExplicitException

Query is too long. Max {MAX_QUERY_LENGTH} characters

Error message

Query is too long. Max {MAX_QUERY_LENGTH} characters

What it means

NaturalLanguageTranslator.translate() is the base class for converting natural language into a structured query string (via an LLM system message). Before calling the model it enforces a maximum input length of MAX_QUERY_LENGTH characters and throws this ExplicitException if exceeded, because longer input would degrade or break translation quality/cost limits.

Source

Thrown at server-core/src/main/java/io/onedev/server/web/behavior/inputassist/NaturalLanguageTranslator.java:22

import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatModel;
import io.onedev.commons.utils.ExplicitException;

public abstract class NaturalLanguageTranslator {

    private static final int MAX_QUERY_LENGTH = 512;

    private final ChatModel model;

    public NaturalLanguageTranslator(ChatModel model) {
        this.model = model;
    }

    public abstract String getQueryDescription();
    
    public String translate(String naturalLanguage) {
        if (naturalLanguage.length() > MAX_QUERY_LENGTH) {
            throw new ExplicitException("Query is too long. Max " + MAX_QUERY_LENGTH + " characters");
        }
        var systemMessage = new SystemMessage("""
            You are a query translator that converts natural language into structured query string described as below:

            """ + getQueryDescription() + """


            Also note that the user input might also be a structure query but with some syntax errors. In that case, 
            fix syntax errors and return the corrected query string.

            IMPORTANT: only structured query string should be returned, no other text or comments.
            """);
            
        var userMessage = new UserMessage(naturalLanguage);
        
        return model.chat(systemMessage, userMessage).aiMessage().text();
    }

View on GitHub (pinned to d44925c47c)

Solutions

  1. Shorten the natural-language input below MAX_QUERY_LENGTH characters before calling translate().
  2. Summarize or split the intent into a concise description and translate the key part only.
  3. If building UI on this API, pre-validate length and show the character limit to the user.

Example fix

// before
String query = translator.translate(longUserInput);

// after
if (longUserInput.length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH)
    longUserInput = longUserInput.substring(0, NaturalLanguageTranslator.MAX_QUERY_LENGTH);
String query = translator.translate(longUserInput);
Defensive patterns

Strategy: validation

Validate before calling

if (naturalLanguage != null && naturalLanguage.length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH)
    throw new IllegalArgumentException("Query exceeds " + NaturalLanguageTranslator.MAX_QUERY_LENGTH + " characters");

Type guard

static boolean isTranslatable(String s) {
    return s != null && s.length() <= NaturalLanguageTranslator.MAX_QUERY_LENGTH;
}

Try / catch

try {
    String query = translator.translate(input);
} catch (ExplicitException e) {
    feedback.error("Query too long: limit is " + NaturalLanguageTranslator.MAX_QUERY_LENGTH + " characters");
}

Prevention

When it happens

Trigger: Calling translate(naturalLanguage) with a string whose length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH, e.g. pasting a long paragraph into a query suggestion input.

Common situations: Users pasting large text blobs or entire queries/issue descriptions into natural-language query boxes (issue/project query assist); automated tools feeding long strings to the translator.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/26838c96a9b79893. Report an issue: GitHub.