-
Key: DDS15-25
-
Legacy Issue Number: 17284
-
Status: open
-
Source: ZettaScale Technology ( Angelo Corsaro, PhD.)
-
Summary:
The current DDSv1.2 specification provides a slightly different semantics for the history on the writer side and on the reader.
In addition, the DDS v1.2 specification allows to use the data-writer history as the "reliability-send-queue" – this is combined with the fact that History is (correctly) not an RxO policy leads to a serious bug in the spec (luckily not all DDS implementations follow this path) . Let's try to understand why.
Firs, it is important to comprehend that unless a data writer uses KeepAll history, reliable data delivery is not guaranteed to matching data readers. This can't be guaranteed even when using Reliable communication (obviously ignoring data-writer crashes for the time being).
Essentially, under this scheme a DataWriter is allowed send/re-send only what is in its history cache. If a sample is out of history a DataWriter won't do anything, thus leading to potential inconsistencies in case some reader has lost the message.
Things get very messy when a DataReader with KeepAll History is matching a DataWriter that does uses KeepLast(n). In this case, the poor DataReader which might legitimally expect to have on his history all the samples written by the writers – without holes – might finds him-/her-self surprised by the fact that some samples might be missing.
-
Reported: DDS 1.4 — Thu, 29 Mar 2012 04:00 GMT
-
Updated: Thu, 10 Oct 2019 00:03 GMT
DDS15 — History and Reliability should be orthogonally independent concerns
- Key: DDS15-25
- OMG Task Force: Data Distribution Service 1.5 RTF