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
- Shorten the natural-language input below MAX_QUERY_LENGTH characters before calling translate().
- Summarize or split the intent into a concise description and translate the key part only.
- 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
- Truncate or summarize user input before translation.
- Surface the character limit in the query input UI.
- Prefer structured query editing for long, complex queries instead of natural language.
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
- Field not found: ${fieldName}
- Criteria '${operator}' is not supported here
- Unexpected operator: ${operator}
- Unexpected criteria: ${operator}
- Cannot order by field: ${fieldName}
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/26838c96a9b79893.
Report an issue: GitHub.