Claus Ibsen created CAMEL-26301:
-----------------------------------

             Summary: tokenizer EIP: an exception of the tokenizer, such as for 
a null body, hangs the exchange forever
                 Key: CAMEL-26301
                 URL: https://issues.apache.org/jira/browse/CAMEL-26301
             Project: Camel
          Issue Type: Bug
          Components: camel-langchain4j-tokenizer, camel-core
            Reporter: Claus Ibsen
             Fix For: 4.24.0


A message with no body sent through the tokenizer EIP 
(camel-langchain4j-tokenizer) never completes: the caller waits forever.

{code:java}
from("direct:start")
    
.tokenize(tokenizer().byParagraph().maxTokens(1024).maxOverlap(10).using(LangChain4jTokenizerDefinition.TokenizerType.OPEN_AI).end())
    .to("mock:result");

template.sendBody("direct:start", null);   // never returns
{code}

*Cause*
* {{AbstractLangChain4JTokenizer.tokenize}} reads the body with 
{{getIn().getBody(String.class)}}, which is null, and the splitter throws 
{noformat}NullPointerException: Cannot invoke "String.split(String)" because 
"text" is null{noformat}
* {{TokenizerProcessor.process(Exchange, AsyncCallback)}} 
(camel-core-processor) calls {{tokenizer.tokenize(exchange)}} without a 
try/catch, so the exception leaves the async process method and the callback is 
never called. {{DefaultReactiveExecutor}} only logs a WARN ("Error executing 
reactive work ... This exception is ignored") and the caller hangs in 
{{DefaultAsyncProcessorAwaitManager.await}}.

Any exception a tokenizer throws hangs the exchange the same way, not only a 
null body.

*Fix*
* {{TokenizerProcessor.process}}: catch the exception of {{tokenize}}, set it 
on the exchange and call {{callback.done(true)}}, as the other EIP processors 
do. Then the error handler sees a normal failure.
* The LangChain4j tokenizer could also give a clear error, or no chunks, for a 
null body.
* A test with a null body (and one with a tokenizer that throws).

Found by the runtime checks of the body types of the EIPs (CAMEL-25928, 
https://github.com/apache/camel/pull/28451).

_Claude Code on behalf of davsclaus_




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to