Hello Milo-dev
case:
we have opcua server that periodically drifts in time and this drift maybe as big for several minutes for an hour (for instance client time maybe 12:00:00 and for opcuaserver its 12:00:30)
our client makes subscription to server and configures listener using:
UaSubscriptionManager.SubscriptionListener:
public void onPublishFailure(UaException exception){
log.error("onPublishFailure", exception);
}
however because of time drift after several hours of work we stop to receive data updates and instead begin to receive errors like:
2020-03-23
15:31:15.207 ERROR 1 --- [milo-shared-thread-pool-2]
.i.q.c.r.SubscriptionBasedNodeReaderImpl : onPublishFailure
org.eclipse.milo.opcua.stack.core.UaServiceFaultException:
status=Bad_Timeout, description=The operation timed out.
at
org.eclipse.milo.opcua.stack.client.UaStackClient.lambda$deliverResponse$5(UaStackClient.java:273)
[stack-client-0.3.4.jar:0.3.4]
at
org.eclipse.milo.opcua.stack.client.UaStackClient$$Lambda$1341/00000000600BFC40.run(Unknown
Source) [stack-client-0.3.4.jar:0.3.4]
at
org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:119)
[stack-core-0.3.4.jar:0.3.4]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[na:1.8.0_242]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[na:1.8.0_242]
at
java.lang.Thread.run(Thread.java:821) [na:1.8.0_242]
right now i am considering the best way to detect case when milo client stopped to receive updates from server because of time drift issue or whatever ?
is there a good any way to distinguish these problems from some communication errors, some dedicated api ?
also am interested in max possible time difference between client and server: is this hardcoded inside of milo client or configurable or even it's determined by opcua server only ?
---
Best regard,
Mikalai
_______________________________________________