etzel-mes commented on code in PR #28128:
URL: https://github.com/apache/camel/pull/28128#discussion_r4324207890


##########
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:
   Thanks, applied: the guide now uses `${body.statusCode.bad} == false`, so 
Uncertain values still pass as before.



-- 
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]

Reply via email to