conductor-oss/conductor · error · NonRetryableException
markdown input is required for GENERATE_PDF task
Error message
markdown input is required for GENERATE_PDF task
What it means
Thrown as NonRetryableException by the GENERATE_PDF worker when input.getMarkdown() is blank. The PDF converter needs markdown source content to render; an empty input cannot produce a document, so it fails terminally.
Source
Thrown at ai/src/main/java/org/conductoross/conductor/ai/tasks/worker/DocumentGenWorkers.java:65
private final String payloadStoreLocation;
public DocumentGenWorkers(
MarkdownToPdfConverter pdfConverter,
List<DocumentLoader> documentLoaders,
Environment env) {
this.pdfConverter = pdfConverter;
this.documentLoaders = documentLoaders;
this.payloadStoreLocation =
env.getProperty(
"conductor.file-storage.parentDir",
System.getProperty("user.home") + "/worker-payload/");
log.info("Document Workers initialized");
}
@WorkerTask("GENERATE_PDF")
public LLMResponse generatePdf(MarkdownToPdfRequest input) {
if (isBlank(input.getMarkdown())) {
throw new NonRetryableException("markdown input is required for GENERATE_PDF task");
}
Task task = TaskContext.get().getTask();
// Convert markdown to PDF bytes
byte[] pdfBytes = pdfConverter.convert(input);
// Determine output location
String outputLocation = input.getOutputLocation();
if (isBlank(outputLocation)) {
outputLocation =
payloadStoreLocation
+ task.getWorkflowInstanceId()
+ "/"
+ task.getTaskId()
+ "/"
+ UUID.randomUUID()
+ ".pdf";View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Provide non-blank markdown content in the GENERATE_PDF input 'markdown' field.
- Verify the upstream task variable referenced by the markdown template actually produced content.
- Add a guard/branch before GENERATE_PDF to skip or fail gracefully when source text is empty.
- Check for mapping typos (the worker reads input.getMarkdown() exactly).
Example fix
// before
{ "markdown": "${task.generate.output}" } // upstream returned null
// after
{ "markdown": "${task.generate.output.result}" } Defensive patterns
Strategy: validation
Validate before calling
// Validate markdown before invoking GENERATE_PDF
if (StringUtils.isBlank(input.getMarkdown())) {
throw new IllegalArgumentException("markdown must be non-blank");
} Prevention
- Branch workflows to skip GENERATE_PDF when source text is empty.
- Map the correct upstream output field into 'markdown'.
- Unit-test the markdown template variable resolution.
When it happens
Trigger: Running a GENERATE_PDF task whose MarkdownToPdfRequest.markdown is null, empty, or whitespace; an upstream LLM_GENERATE or text task that produced no output being mapped into markdown.
Common situations: Upstream task returned empty result so the template variable resolved to blank; workflow author mapped the wrong output field into markdown; programmatic caller constructed MarkdownToPdfRequest without setting markdown; markdown sourced from a file that was empty/missing.
Related errors
- agentUrl must not be blank
- markdown content must not be null
- GET_AGENT_CARD requires 'agentUrl'
- AGENT requires one of: message, parts, text, or prompt
- Unsupported agentType '<agentType>' (only 'a2a' is supported
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/d673c24ad9ed78f6.
Report an issue: GitHub.