Search code examples
qtopc-uaqtopcua

What can cause a BadTimeout in OpcUa?


I have a Qt application that exchange data via QtOpcUa. I don't have any polling or browsing or other operation but a bunch of subscriptions. Every few minutes I get a BadTimeout error from the server that closes the connection.

This happens only if I have any subscription enabled and more than one PLC connected. But what can cause such a timeout?

Here I read:

The operation timed out.

How a subscription can "time out"? It's done by the server itself! Is it a problem of the server or can I do anything client side?

The messages I receive are:

[20231003 12:51:19 I] unknown:0 - "Received a ServiceFault response"
[20231003 12:51:19 I] unknown:0 - "The ServiceResult has the StatusCode BadTimeout"
[20231003 12:51:19 W] unknown:0 - "Received Timeout for Publish Response"

Solution

  • Your client application may be sending/queueing more PublishRequests than the activity level of the Subscriptions needs, or with timeout hints in the RequestHeader that are too short, and eventually the server de-queues it and finds that it was received longer ago than the timeout hint and sends back a ServiceFault response with Bad_Timeout.