GMD out of sequence/mixed messagesissues.

GMD out of sequence/mixed messagesissues.

book

Article ID: KB0090019

calendar_today

Updated On:

Products Versions
TIBCO SmartSockets -
Not Applicable -

Description

Resolution:
There is a known issue when using GMD and concurrent processing that if the receiving client gets disconnected (warm) from RTserver it is possible to experience missed messages.

Assume a publishing client publishes GMD messages 1,2,3,4 and that since the subscribing client is multi-threaded it completes the message processing in the order 4,3,2,1 , A GMD_ACK is sent to RTserver for message 4 but then RTclient crashes (before it has completed processing or acknowledging 1, 2, or 3). Upon the client’s reconnecting the RTserver will resend messages 1,2,3 to the client with a resend flag set to TRUE in each message. When message 1 is received the client will check the resend flag of the message in its read callback. If the resend flag of the message is TRUE and the sequence number of the message is less than or equal to the high sequence number (found in the receiver’s GMD area)  that the client is maintaining (“4” in this case) the read callback calls TipcMsgDestroy on the message which destroys the message and forces a GMD_ACK for that message to be sent back to RTServer even though the message was never processed by the client. In this way the message will not keep being resent to the subscriber by the RTserver. The same applies to messages 2 and 3.

Issue/Introduction

GMD out of sequence/mixed messagesissues.