Report ID. | Description |
---|---|
4925 dds550 |
numberOfTakes not updated in reader statistics The reader statistics attribute numberOfTakes is not updated. The numberOfSamplesTaken attribute is > 0 while numberOfTakes == 0. Solution: The statistic was not updated when a query was used. Therefore statistics have been added to queries. So the numberOfTakes statistic on reader entities is increased for every take on the reader entity and the same applies to queries. So the total number of takes is the sum of the statistic per query and reader. |
4965 dds579 |
would be convenient to allow for idl syntax to insert '#includes' into generated code Due to some common types used in the generated code it would be convenient if we could also insert #includes into the generated source. This would require a modification to the IDL syntax to allow for specification of an include file. Solution: The IDL preprocessor user manual has been updated on how to use include's in your .idl files. |
dds593 |
networking service cores on incoming messages with invalid partionId The networking service is not robust against incoming messages with invalid content. Solution: The networking service now validates the content of the incoming network packets and ignores the packets that are invalid. |
5302 dds709 |
PRE_CONDITION not met on unregister_instance If a topic is exclusive and has a deadline period on the writer, when the unregister_instance call is made a PRECONDITION_NOT_MET error is thrown if the sleep period is longer than the deadline. If the topic is not exclusive then this error is not thrown. Solution: When the deadline was missed the instance handle was invalidated, which cause the unregister_instance() call to fail. Now the instance handle is not invalidated, but the application is still notified. |
5331 dds717 |
unregister triggers waitset but read returns NO_DATA An unregister of an instance triggers the waitset containing a condition which matches that particular instance. When the instance does not contain any samples, eg all samples are taken, then the read operation on that instance returns NO_DATA. Both DataReader_read_w_condition and DataReader_read_instance show the same behaviour. Solution: The DataReader cache did not handle invalid samples correctly, which has been fixed. When an unregister message is received by the DataReader for an empty instance a sample is created with the SampleInfo.valid_data flag set to FALSE. |
5478 dds790 |
Documentation does not describe The deplyoment guide does not have any description of the channel configuration property:
for the networking service. It is also not possible to add this option using the OpenSplice
DDS Configurator tool.
Solution: The deployment guide and the Configurator has been updated to describe this configuration option. |
6087 dds1052 |
LIVELINESS_CHANGED status flag is not reset per DDS specification During Performance testing, it was noticed that the LIVELINESS_CHANGED status flag is not reset when the on_liveliness_changed method is invoked (should be per the DDS specification). A call to the get_liveliness_changed_status() method had to be added within the listener to reset the status flag. Solution: The status flag is now reset after the on_liveliness_changed method is called. |
6097 dds1056 |
idlpp does not clean up intermediate idl files when option -d is used When using the option -d for outputting the generated files in a sub-directory, idlpp does not remove the intermediate fooDcps.idl file. It does remove fooDcps.idl when -d option is not used. Solution: Intermediate resources are now cleaned when the -d option is used. |
Report ID. | Description |
---|---|
dds691 |
DLRL module to change liveliness behavior When an Object in DLRL no longer has any writers it enters a final lifecycle state internally. It can only exit this state if a new sample for that instance arrives. When this occurs the DLRL destroys the 'old' Object and creates a new Object to signal that this has taken place. As a result the user will see an Object in the 'created_objects' list and an Object in the 'deleted_objects' list that represents the same instance. This is rather confusing when used in applications as it means an Object can be destroyed in the Cache without ever receiving a dispose event. So basically the no_writers situation is treated as a 'postponed' dispose event, to be processed when a new sample for that instance arrives! It makes management of such scenarios on application level rather tedious. Solution: The DCPS concepts of NOT_ALIVE_DISPOSED and NOT_ALIVE_NO_WRITERS will now be treated differently on DLRL level. Only an explicit dispose leads to Objects being destroyed and changes from NOT_ALIVE_NO_WRITERS back to ALIVE and vice versa only lead to Object modifications (if a new sample is available). |
dds721 |
Wrong API behavior on DLRL SAJ for operation ObjectHome.content_filter() By default the 'content_filter' operation returns an empty string (i.e. ""), but it should be NULL, according to the specification. Solution: The 'content_filter' operation now returns NULL by default. |
dds747 |
Ownership policy interface incorrect in DCPS API The DDS specification specifies an OWNERSHIP QoS policy. This policy applies to a Topic, DataReader and a DataWriter. The Topic specifies the default and the DataWriter and/or DataReader can specify their own. The RxO of this policy states the value should be equal. In the OpenSplice DCPS API, the OWNERSHIP QoS policy is only available for the Topic. There is no way for the DataWriter and/or DataReader to change the default setting. Solution: The OWNERSHIP QoS policy has been added to the DataWriter QoS and DataReader QoS. |
dds765 |
SampleRejectedStatus is not implemented according to the DDS1.2 spec. The SampleRejectedStatus in OpenSplice DDS is not implemented according to the DDS1.2 specification. According this specification, the last_reason should be an enumeration defined as:
If no sample is rejected the last_reason should be NOT_REJECTED, however it shows
REJECTED_BY_INSTANCE_LIMIT.Solution: The reject reason was not properly implemented in the kernel. This has been fixed. |
dds822 |
The operation lookup_instance is missing on the DataWriter. According to the OMG DDS specification, each typed DataWriter should offer an operation called lookup_instance, that accepts a sample for which the keyfields have been initialized and returns the instance_handle that represents the DataWriter instance of the supplied sample. OpenSplice DDS does not provide the lookup_instance operation for a DataWriter. Solution: The lookup_instance() operation has been implemented and the reference manuals have been updated accordingly. |
dds1024 |
Develop request for subset of historical data In some cases an application only requires a subset of available historical data. When the historical data set is large, it is a waste of resources to align all available data. To improve resource usage in these scenarios the DCPS API should be extended, so applications can define a subset of the available data. Solution: The DCPS API has been extended with a DataReader operation called 'wait_for_historical_data_w_condition()' which accepts additional parameters to define the subset of data the DataReader is interested in. The Durability Service can be instructed only to align data on request for specific namespace(s) (see deployment guide). |
dds1389 |
Some unsupported operations have method signatures that are not according to the DDS 1.2 spec The order of the 2 parameters of the operations:
Solution: The signatures have been changed and comply to the OMG DDS 1.2 specification. The operations are NOT implemented and return DDS_UNSUPPORTED as a return code. |