davsclaus commented on code in PR #28128:
URL: https://github.com/apache/camel/pull/28128#discussion_r4324149816
##########
docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc:
##########
@@ -1806,6 +1806,28 @@ the server does not have, with the status code
`Bad_NodeIdUnknown`, and the othe
affected. Previously an awaited write or read completed without an error and
with a `null` body, and a browse failed
with a `NullPointerException`.
+=== camel-milo - the consumer reports a lost connection and refreshes its
values after it
+
+The OPC UA client consumer delivers `Bad_NoCommunication` with a null value
for every monitored node when
+communication with the server is lost, and the current value of every node
once communication is restored. Before,
+the consumer delivered nothing during an outage, and values that did not
change were not delivered again after it.
+
+A consumer that starts while the server cannot be reached, or whose client
cannot connect at all, for example because
+of wrong credentials or an untrusted server certificate, delivers the status
for its nodes too; the cause is in the
+log. A connection that Camel rebuilds after a failed request delivers it for
every node of the connection. Each loss and
+each recovery delivers one exchange per node.
+
+A route that uses only the value of the `DataValue` body receives a null for
these exchanges, which the type converters
+turn into `0` or `false`; a route that stores values checks the status code of
the body first, for example with
+`${body.statusCode.bad}`. A value can now arrive again after an outage, so a
route that counts values, computes
+differences or detects changes must tolerate repeats. The consumer's route
also runs during an outage: an OPC UA write
+that it makes while the client reconnects waits for the next reconnect attempt
and can take effect after communication
+is restored, and a request that fails rebuilds the connection.
+
+To keep the previous behaviour, filter the exchanges with a bad status out
right after the consumer, for example with
+`filter(simple("${body.statusCode.good}"))`. This also drops the other bad
statuses, such as the refusal of a node, and
Review Comment:
Nit (my suggestion, sorry): `${body.statusCode.good}` also drops Uncertain
values, which were delivered before this change. `${body.statusCode.bad} ==
false` would be closer to the previous behaviour: it drops only the Bad
statuses. Either is fine if you prefer to keep it as is.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]