{"record":{"id":"5092fe087ace4c72","repo":"languagetool-org/languagetool","slug":"synthesize-request-failed","errorCode":null,"errorMessage":"Synthesize request failed","messagePattern":"Synthesize request failed","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"languagetool-server/src/main/java/org/languagetool/server/RemoteSynthesizer.java","lineNumber":95,"sourceCode":"  @Override\n  public void synthesize(org.languagetool.grpc.Synthesizer.SynthesizeRequest request, StreamObserver<org.languagetool.grpc.Synthesizer.SynthesizeResponse> responseObserver) {\n\n    try {\n      List<org.languagetool.grpc.Synthesizer.SynthesizeResponseItem> items = new ArrayList<>();\n\n      for (org.languagetool.grpc.Synthesizer.SynthesizeRequestItem item : request.getItemsList()) {\n        AnalyzedTokenReadings tokens = null;\n        if (item.getPostagRegexp()) {\n          tokens = GRPCUtils.fromGRPC(item.getTokens());\n        }\n        List<String> forms = synthesize(request.getLanguageCode(), tokens, item.getPostagRegexp(), item.getPostag(), item.getPostagReplace(), item.getLemma());\n        items.add(org.languagetool.grpc.Synthesizer.SynthesizeResponseItem.newBuilder()\n          .addAllForms(forms).build());\n      }\n      responseObserver.onNext(org.languagetool.grpc.Synthesizer.SynthesizeResponse.newBuilder().addAllItems(items).build());\n      responseObserver.onCompleted();\n    } catch(Exception e) {\n      log.warn(\"Synthesize request failed\", e);\n      responseObserver.onError(e);\n    }\n\n  }\n  private Options getCommandLineOptions() {\n    Options options = new Options();\n    options.addOption(Option.builder().longOpt(\"port\").hasArg().build());\n    options.addOption(Option.builder().longOpt(\"cert\").hasArg().build());\n    options.addOption(Option.builder().longOpt(\"key\").hasArg().build());\n    return options;\n  }\n\n  private CommandLine parseCommandLine(String[] args) throws ParseException {\n    CommandLineParser parser = new DefaultParser();\n    return parser.parse(getCommandLineOptions(), args);\n  }\n\n","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-server/src/main/java/org/languagetool/server/RemoteSynthesizer.java#L77-L113","documentation":"gRPC error guard in RemoteSynthesizer.synthesize: synthesizing word forms for one of the request items threw (bad postag regexp, unsupported token input, or synthesizer data missing); the error is sent via responseObserver.onError.","triggerScenarios":"Thrown at languagetool-server/src/main/java/org/languagetool/server/RemoteSynthesizer.java:95 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check server logs for the underlying cause","Verify postag regexps in request items are valid","Ensure the language's synthesizer dictionary is installed"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}