{"record":{"id":"26838c96a9b79893","repo":"theonedev/onedev","slug":"query-is-too-long-max-max-query-length-characte","errorCode":null,"errorMessage":"Query is too long. Max {MAX_QUERY_LENGTH} characters","messagePattern":"Query is too long\\. Max (.+?) characters","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/web/behavior/inputassist/NaturalLanguageTranslator.java","lineNumber":22,"sourceCode":"import dev.langchain4j.data.message.UserMessage;\nimport dev.langchain4j.model.chat.ChatModel;\nimport io.onedev.commons.utils.ExplicitException;\n\npublic abstract class NaturalLanguageTranslator {\n\n    private static final int MAX_QUERY_LENGTH = 512;\n\n    private final ChatModel model;\n\n    public NaturalLanguageTranslator(ChatModel model) {\n        this.model = model;\n    }\n\n    public abstract String getQueryDescription();\n    \n    public String translate(String naturalLanguage) {\n        if (naturalLanguage.length() > MAX_QUERY_LENGTH) {\n            throw new ExplicitException(\"Query is too long. Max \" + MAX_QUERY_LENGTH + \" characters\");\n        }\n        var systemMessage = new SystemMessage(\"\"\"\n            You are a query translator that converts natural language into structured query string described as below:\n\n            \"\"\" + getQueryDescription() + \"\"\"\n\n\n            Also note that the user input might also be a structure query but with some syntax errors. In that case, \n            fix syntax errors and return the corrected query string.\n\n            IMPORTANT: only structured query string should be returned, no other text or comments.\n            \"\"\");\n            \n        var userMessage = new UserMessage(naturalLanguage);\n        \n        return model.chat(systemMessage, userMessage).aiMessage().text();\n    }\n","sourceCodeStart":4,"sourceCodeEnd":40,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/web/behavior/inputassist/NaturalLanguageTranslator.java#L4-L40","documentation":"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.","triggerScenarios":"Calling translate(naturalLanguage) with a string whose length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH, e.g. pasting a long paragraph into a query suggestion input.","commonSituations":"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.","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."],"exampleFix":"// before\nString query = translator.translate(longUserInput);\n\n// after\nif (longUserInput.length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH)\n    longUserInput = longUserInput.substring(0, NaturalLanguageTranslator.MAX_QUERY_LENGTH);\nString query = translator.translate(longUserInput);","handlingStrategy":"validation","validationCode":"if (naturalLanguage != null && naturalLanguage.length() > NaturalLanguageTranslator.MAX_QUERY_LENGTH)\n    throw new IllegalArgumentException(\"Query exceeds \" + NaturalLanguageTranslator.MAX_QUERY_LENGTH + \" characters\");","typeGuard":"static boolean isTranslatable(String s) {\n    return s != null && s.length() <= NaturalLanguageTranslator.MAX_QUERY_LENGTH;\n}","tryCatchPattern":"try {\n    String query = translator.translate(input);\n} catch (ExplicitException e) {\n    feedback.error(\"Query too long: limit is \" + NaturalLanguageTranslator.MAX_QUERY_LENGTH + \" characters\");\n}","preventionTips":["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."],"tags":["validation","query","length-limit","natural-language"],"backgroundTag":"value-out-of-range","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}