Topic RSS15:57, EEST
February 21, 2014
OfflineHi,
I have a UDP publisher publishing 2 DataSets in 2 different DataSetWriterGroups at different publishingIntervals (1000ms and 2000ms).
The subscriber uses a single DataSetReader/group without preconfigured writer/publisher/.. ids to receive all possible messages on that multicast socket.
When logging the subscriber side, the SDK warns about old sequenceNumbers, comparing the sequenceNumbers from both received DataSetWriters. It is my understanding from the Standard Part 14, 7.2.4.5.4 DataSetMessage header, that the SequenceNumber is related to the DataSet and not to a publisher. Is the SDK sequence number evaluation possibly incorrect here?
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=17, publisherId=String:XXXXXX, writerGroupId=2, dataSetWriterIds=[2], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=34, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=35, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
WARN com.prosysopc.ua.pubsub.ao – Sequence number (18) indicates that the received message is older than the previous one (35).
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=18, publisherId=String:XXXXXX, writerGroupId=2, dataSetWriterIds=[2], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=36, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=37, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
WARN com.prosysopc.ua.pubsub.ao – Sequence number (19) indicates that the received message is older than the previous one (37).
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=19, publisherId=String:XXXXXX, writerGroupId=2, dataSetWriterIds=[2], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=38, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
WARN com.prosysopc.ua.pubsub.ao – Sequence number (20) indicates that the received message is older than the previous one (38).
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=20, publisherId=String:XXXXXX, writerGroupId=2, dataSetWriterIds=[2], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=39, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=40, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
INFO MyService – PubSubUdpUadpConnectionNetworkMessageReceivedEvent: seqNo=41, publisherId=String:XXXXXX, writerGroupId=1, dataSetWriterIds=[1], dataSetMessageCount=1
WARN com.prosysopc.ua.pubsub.ao – Sequence number (21) indicates that the received message is older than the previous one (41).
10:25, EEST
Moderators
May 5, 2020
OfflineHi hbrackel,
You seem to be correct. Looking at the code, the DataSetReader implementation currently holds only one lastDataSetSequenceNumber, which is used when producing that warning log. Consequently, if multiple DataSetWriters are received by the same DataSetReader, the implementation does not distinguish the source of the sequence number.
Based on this, the sequence number validation should likely be tracked at least per DataSetWriter, even when the DataSetReader is the same.
I’ll create an issue for this. Thanks for the report.
15:21, EEST
April 3, 2012
OfflineHi,
As far as I remember the U(A)DP logic didn’t yet properly support wildcards, though it mostly appears to do so via common logic. A proper wildcard-supporting version would need to keep track of the numbers for each PublisherId+WriterId combination it sees. Though in reality probably something like last 100 seen to avoid memory leaks.
1 Guest(s)

Log In
Register