Serdar Gökay created CAMEL-25671:
------------------------------------
Summary: camel-milo - a node ID with an unknown namespace URI
fails the whole client connection
Key: CAMEL-25671
URL: https://issues.apache.org/jira/browse/CAMEL-25671
Project: Camel
Issue Type: Bug
Components: camel-milo
Affects Versions: 4.16.0, 4.22.1, 4.18.5
Reporter: Serdar Gökay
A {{milo-client}} consumer whose node ID uses a namespace URI ({{nsu=...}})
that is not in the namespace table of the server takes the whole connection
down, including the consumers of other nodes on the same connection.
{{SubscriptionManager.lookupNamespace}} resolves the URI to an index; for an
unknown URI the index is {{null}}, and {{NodeIds.toNodeId(null, ...)}} throws a
{{NullPointerException}} inside the future. {{putSubscriptions}} calls
{{get()}} on it, the exception reaches {{handleConnectionFailure}}, the
connection is closed, and the next connect attempt fails the same way every
reconnect period (10 s). The {{node == null}} branch that would report
{{Bad_InvalidArgument}} for that one node is never reached.
*Reproduction* (embedded {{milo-server}}): one consumer on
{{nsu=urn:org:apache:camel;s=node2}} receives values. Start a second consumer
on the same connection with {{nsu=urn:not:there;s=node1}}: the log shows
"Connection failed java.util.concurrent.ExecutionException:
java.lang.NullPointerException" and "Failed to set subscriptions ... Trigger
re-connect" every 10 s, and the first consumer receives nothing any more. With
a single-node consumer on {{main}} the behaviour is the same; with the
{{nodes}} list of CAMEL-25566 one typo in a long list is enough to hit it.
*Proposed change*: resolve the namespace per node and report an unresolvable
URI once to that node's consumer as {{Bad_NodeIdInvalid}} (Milo's own status
for "namespace not registered"), without touching the other nodes or the
connection; retry it together with the other failed items once the failed-item
retry is back (planned follow-up of CAMEL-25566). Found during the review of PR
#27780 (point 3 of the review by allthingssecurity).
_Claude Code on behalf of etzel-mes_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)