According to the requirement "Subscription Publish Min 02" of the Embedded DataChange Subscription Server Facet the retransmission queue is not required to implement. I did a hack in an SDK to disable the retransmission queue and connected with UaExpert. When I subcribed to one parameter of the server I got the following error in UaExpert log when first publish response was received: "List of available sequence numbers is empty, at least the current sequence number has to be available".
So, when I removed the retransmission queue the availableSequence Numbers field of the Publish response was not populated with any sequence numbers.
In Part 4 (1.04) the availableSequence Numbers field of the Publish response is described as "A list of sequence number ranges that identify unacknowledged NotificationMessages that are available for retransmission from the Subscription’s retransmission queue.".
According to that description of Part 4 I think SDK server behaves correctly as there is no retransmission queue implemented and hence no sequence numbers to present. But I can't really find any statement in the specifications about the correct behavior in this case.
How shall the availableSequence Numbers field of the publish response be handled when the retransmission queue is disabled/not implemented?
The definitions in Part 4 expect that the retransmission queue is always available as specified and client compliance testing requires clients to log an error if Publish response availableSequenceNumbers array is empty.
Today in the OPC UA meeting we discussed clarifications to support the case that retransmission queue is not supported by the server with the following extensions:
- Clarify that the server sends an empty availableSequenceNumbers if it does not support retransmission queue and sequence number acknowledgment. CLients should do not do a sequence number acknowledgment in this case
- Add status code Good_RetransmissionQueueNotSupported for Publish operation level results for the case that a client acknowledges a sequence number but the server does not support it
This will most likely be officially updated with errata 1.04.8