Claus Ibsen created CAMEL-25429:
-----------------------------------
Summary: camel-jbang - route topology: show dead letter and
onException targets as error paths from the route whose error handler acts
Key: CAMEL-25429
URL: https://issues.apache.org/jira/browse/CAMEL-25429
Project: Camel
Issue Type: Bug
Components: camel-jbang
Reporter: Claus Ibsen
The route topology of a project (the topology/architecture diagram of
camel-jbang and the topology the camel-jbang MCP tools return) draws the target
of a dead letter channel or onException wrongly.
Example: fail-well/error-handling in camel-jbang-examples. It has a global
deadLetterChannel to direct:parked and a global
onException(IllegalStateException) that also sends to direct:parked. Route
checkout (file:orders) calls direct:charge, which is route payment-provider
with noErrorHandler. Route parked writes the order to file:parked. When the
payment provider fails, the failure goes back to checkout, whose error handler
sends the order to parked.
What the diagram draws today:
{noformat}
file:orders -> [checkout] --> [payment-provider] --> > Utility (loop arrow on
itself)
(parked, collapsed)
{noformat}
It says payment-provider calls parked and parked calls itself; neither is true.
The JSON topology does not list parked or its edges at all.
What it should draw:
{noformat}
file:orders -> +----------+ call +------------------+
| checkout |-------->| payment-provider |
+----+-----+ +------------------+
: on failure: dead letter (2 retries),
: onException IllegalStateException
v
+----------+
| parked |--> file:parked
+----------+
{noformat}
* error paths drawn dashed and labelled (on failure: dead letter /
onException), from the route whose error handler acts: here checkout, as
payment-provider has noErrorHandler and its failure goes back to its caller
* parked drawn as a normal route, not a collapsed Utility box
* the JSON topology lists parked and the edge with kind onError, so a tool or
an agent sees the same picture
The link model already marks a link as on error when every send to it handles a
failure, so much of this is drawing. Still to find out: why the edge comes out
of payment-provider and why parked gets a loop (likely the global error
handler's send to direct:parked is attached to every route, parked itself
included).
The same may be needed in camel-diagram and the route/topology dev consoles,
which draw or report the route graph too.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)