Client has upgraded and switched to Websocket API this week.
- We sometimes receive the following message
[ { "ID": 2, "Type": "Update", "Domain": "Source", "UpdateType": "Unspecified", "DoNotConflate": true, "Key": { "Service": "BLOOMBERG", "Filter": 3 }, "Map": { "KeyType": "UInt", "Entries": [ { "Action": "Update", "Key": 129, "FilterList": { "Entries": [ { "ID": 1, "Action": "Set", "Elements": { "Name": "BLOOMBERG", "SupportsQoSRange": 0, "Capabilities": { "Type": "Array", "Data": { "Type": "UInt", "Data": [ 5, 6, 7, 8, 10 ] } }, "QoS": { "Type": "Array", "Data": { "Type": "Qos", "Data": [ { "Timeliness": "Realtime", "Rate": "TimeConflated", "RateInfo": 300 } ] } }, "DictionariesProvided": { "Type": "Array", "Data": { "Type": "AsciiString", "Data": [ "RWFFld", "RWFEnum" ] } }, "DictionariesUsed": { "Type": "Array", "Data": { "Type": "AsciiString", "Data": [ "RWFFld", "RWFEnum" ] } }, "Vendor": "BloombergLP", "IsSource": 1, "SupportsOutOfBandSnapshots": 0, "AcceptingConsumerStatus": 1 } } ] } } ] } } ] |
|---|
Whereas, we always expect to have at the end this section (which is missing above):
{ "ID": 2, "Action": "Set", "Elements": { "ServiceState": 1, "AcceptingRequests": 1 } } |
|---|
We understood that this message (with ID:2) only appears in "Refresh" message all the time and in "Update" message when the "filter" is at least "4".
We actually use this second section (ID:2) to determiner whether the service is still up or not. In case the Service is not UP (or the message is missing), we deduce that the service is not operational and we stop the connection (which is why the client is having issues).
By the way, the client is not reproducing the issue in their UAT environment, in which no "Update" with domain "Source" is seen from the logs.
My questions are the following:
- When are these "Updates" of domain "Source" triggered ? If we can find a way to not trigger these actions, this could be a temporary workaround to unblock the client production ?
- What is the guideline from LSEG regarding these messages ?
- Should we assume the second section of the message (status update) will always be present ?
- What should we do when the message is not present ? Stopping the connection like we do today ? Or just do nothing ?
- Should we increase the filter level (currently set to 3) to 4 to get the status update everytime ? What is the recommendation for that ?