rmw_cyclonedds/rmw_cyclonedds_cpp
eboasson 0ca71446a9 Address "Precondition not met" on rmw_create_node (#65) (#66)
Cyclone's original code for dds_create_domain() appears to create a
domain entity that is automatically deleted when the last attached
participant disappears.  In reality, it leaks a reference while
returning DDS_RETCODE_OK, making it appear as-if it is a regular entity
that remains into existence until explicitly deleted.

The RMW code assumed that it would be automatically deleted when the
last node was destroyed and that a subsequent call to rmw_create_node
could create the domain anew.  This then fails with "precondition not
met".

In an upcoming fixed version of dds_create_domain() the domain entities
will behave normally (return a handle, require an explicit delete).

This commit provides a workaround for the bug in the original
implementation: by recovering the handle from the first participant the
preceding commits that were intended to future-proof the code will
ensure that the entity now gets deleted explicitly.

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-11-11 15:28:53 -05:00
..
include/rmw_cyclonedds_cpp remove executive flags from source code files 2019-10-25 10:15:48 +02:00
src Address "Precondition not met" on rmw_create_node (#65) (#66) 2019-11-11 15:28:53 -05:00
CHANGELOG.rst 0.4.2 2019-11-01 13:51:51 -07:00
CMakeLists.txt skip compilation of rmw_cyclonedds when cyclone dds is not found (#56) 2019-10-25 17:45:39 +02:00
package.xml 0.4.2 2019-11-01 13:51:51 -07:00
rmw_cyclonedds_cpp-extras.cmake replace FastCDR and serialise straight into a serdata to avoid an extra copy 2018-07-19 16:37:12 +02:00