You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Johannes Boßle (Jira)" <ji...@apache.org> on 2023/10/16 14:30:00 UTC
[jira] [Updated] (CAMEL-19996) camel-lra NullPointerException when creating a saga with invalid lra-url
[ https://issues.apache.org/jira/browse/CAMEL-19996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Johannes Boßle updated CAMEL-19996:
-----------------------------------
Component/s: camel-core-processor
> camel-lra NullPointerException when creating a saga with invalid lra-url
> ------------------------------------------------------------------------
>
> Key: CAMEL-19996
> URL: https://issues.apache.org/jira/browse/CAMEL-19996
> Project: Camel
> Issue Type: Bug
> Components: camel-core-processor, camel-lra
> Affects Versions: 4.1.0
> Reporter: Johannes Boßle
> Priority: Major
>
> There is a NullpointerException occurring, when
> * you start a new saga (required, automatic completion)
> * your configured lra is not valid (e.g. you get some arbitrary page from this url)
> As a result, the request never ends and runs infinite.
> {noformat}
> org.apache.camel.service.lra.LRAClient.newLRA()
> is calling org.apache.camel.service.lra.LRAClient.toURL(Object)
> -> throw new RuntimeCamelException(ex);
> --> this is kind of expected, but now the error is handled
> the call was initiated by
> org.apache.camel.processor.saga.RequiredSagaProcessor.process(Exchange, AsyncCallback)
> and ends up finally in
> org.apache.camel.processor.saga.SagaProcessor.ifNotException(Throwable, Exchange, boolean, CamelSagaCoordinator, CamelSagaCoordinator, AsyncCallback, Runnable) {
> if (ex != null) {
> exchange.setException(ex);
> if (handleCompletion) {
> handleSagaCompletion(exchange, coordinator, previousCoordinator, callback);
> } else {
> Since org.apache.camel.processor.saga.SagaProcessor.handleSagaCompletion(Exchange, CamelSagaCoordinator, CamelSagaCoordinator, AsyncCallback) is called
> with completionMode == SagaCompletionMode.AUTO
> if (exchange.getException() != null) {
> coordinator.compensate().whenComplete(...
> coordinator is always null, because newSaga was not yet (sucessfully) executed{noformat}
> Since the NPE occurs during the errorHandling of the invalid URL itself, it is retried to infinity or something else happens, which never retunrs in awaitable time.
>
> Proposal Fix
> A coordinator should only be null, if there is no saga present yet. So in this case it would be safe to call
> {noformat}
> callback.done(false){noformat}
> instead of trying to call some methods of the coordinator to rollback.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)