{"record":{"id":"a1e591f44b813272","repo":"conductor-oss/conductor","slug":"error-parsing-the-json-schema-message","errorCode":null,"errorMessage":"Error parsing the json schema : {message}","messagePattern":"Error parsing the json schema : (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"ai/src/main/java/org/conductoross/conductor/ai/LLMHelper.java","lineNumber":349,"sourceCode":"                return null;\n            }\n\n            Set<ValidationMessage> validationMessages =\n                    jsonSchemaValidator.validate(schemaContent, data);\n\n            if (validationMessages != null && !validationMessages.isEmpty()) {\n                return String.format(\n                        \"Schema validation failed %s\",\n                        validationMessages.stream()\n                                .map(ValidationMessage::getMessage)\n                                .collect(Collectors.joining(\", \")));\n            }\n            return null;\n        } catch (JsonSchemaException jpe) {\n            throw new RuntimeException(\n                    \"Bad/Unsupported schema? : \" + jpe.getValidationMessages().toString());\n        } catch (JsonProcessingException jpe) {\n            throw new RuntimeException(\"Error parsing the json schema : \" + jpe.getMessage(), jpe);\n        }\n    }\n\n    @SneakyThrows\n    private LLMResponse chatComplete(\n            ChatModel chatModel, ChatOptions chatOptions, ChatCompletion input) {\n        ChatClient chatClient = ChatClient.create(chatModel);\n        if (StringUtils.isNotBlank(input.getInstructions())) {\n            input.getMessages()\n                    .addFirst(new ChatMessage(ChatMessage.Role.system, input.getInstructions()));\n        }\n\n        List<Message> messages =\n                new ArrayList<>(input.getMessages().stream().map(this::constructMessage).toList());\n\n        ensureLastMessageIsFromUser(messages);\n\n        Prompt prompt = new Prompt(messages, chatOptions);","sourceCodeStart":331,"sourceCodeEnd":367,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/ai/src/main/java/org/conductoross/conductor/ai/LLMHelper.java#L331-L367","documentation":"Thrown by LLMHelper.validateJsonSchema() when the SchemaDef's data cannot be serialized to JSON by Jackson (JsonProcessingException). This indicates the schema definition object itself is not serializable, typically because it contains non-serializable types or circular references.","triggerScenarios":"objectMapper.writeValueAsString(schema.getData()) throws JsonProcessingException when serializing the SchemaDef data for validation. This happens when the schema data contains types Jackson cannot handle or the schema data structure is corrupt.","commonSituations":"The SchemaDef data was constructed programmatically with non-serializable objects. The schema definition loaded from persistence has a corrupted or unexpected structure. A version mismatch in the SchemaDef model causes fields to have unexpected types.","solutions":["Inspect the SchemaDef.getData() object structure to identify non-serializable fields","Ensure the schema is stored and loaded as a plain Map or POJO that Jackson can serialize","Check the exception message (jpe.getMessage()) for the specific serialization failure","Verify the schema definition was not corrupted during persistence/retrieval"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Ensure SchemaDef data is serializable before use\nif (schemaDef != null && schemaDef.getData() != null) {\n    try {\n        objectMapper.writeValueAsString(schemaDef.getData());\n    } catch (JsonProcessingException e) {\n        throw new IllegalArgumentException(\"SchemaDef data is not serializable: \" + e.getMessage(), e);\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    LLMResponse response = llmHelper.chatComplete(task, llm, chatCompletion, location, logger);\n} catch (RuntimeException e) {\n    if (e.getMessage().startsWith(\"Error parsing the json schema\")) {\n        log.error(\"SchemaDef serialization failed: {}\", e.getMessage());\n        taskResult.setStatus(TaskResult.Status.FAILED_WITH_TERMINAL_ERROR);\n    } else {\n        throw e;\n    }\n}","preventionTips":["Ensure SchemaDef.data is a plain Map<String, Object> or a simple POJO","Avoid putting non-serializable objects in schema definitions","Test schema loading in isolation during CI"],"tags":["ai","llm","json-schema","serialization"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}