ZettaScale Knowledge Base ZettaScale Knowledge Base

  • Home
  • DDS Products
    • DDS Overview and Concepts
    • OpenSplice DDS
      • OpenSplice DDS
        • OpenSplice FAQ
        • Why OpenSplice DDS?
        • Installation
          • OpenSplice Licensing FAQ
        • Best Practice and Possible Errors
        • API and IDL
        • Configuration
        • Networking
          • DDSI
          • RT Networking
        • Durability Service
        • DDS Security
        • Logging
        • Databases and DBMS
        • Release Notes
      • OpenSplice Tools
        • Overview
        • OpenSplice Launcher
        • OpenSplice Tuner
        • OpenSplice Tester
        • Record and Replay Manager
        • MMStat
    • Cyclone DDS
  • Zenoh
  • Contact Support
Home / Fixed Bugs and Changes in OpenSplice v6.1.x

Fixed Bugs and Changes in OpenSplice v6.1.x

This page lists all the changes and fixed bugs in OpenSplice v6.1.x

Regular releases of OpenSplice are made available which contain fixed bugs, changes to supported platforms and new features.

There are two types of release, major releases and minor releases.  Upgrading OpenSplice contains more information about the differences between these releases and the impact of upgrading.  We advise customers to move to the most recent release in order to take advantage of these changes.  This page details all the fixed bugs and changes between different OpenSplice releases.  There is also a page which details the new features that are the different OpenSplice releases.

There are two different types of changes. Bug fixes and changes that do not affect the API and bug fixes and changes that may affect the API. These are documented in separate tables.

Fixed Bugs and Changes in OpenSplice v6.1.x

OpenSplice v6.1.1p4

Report ID. Description
OSPL-1017/
10755
Added support for Windriver Linux 4.3 on Freescale MPC8308


Solution: Implementated platform support for windriver linux 4.3 on mpc8308

OpenSplice v6.1.1p3

Report ID. Description
OSPL-1017/
10755
Durability crashes when alignment data contains only unregister messages
The 6.1.1p2 release failed on this issue.

Solution: Correctly applied patch to resolve the issue.
OSPL-1092/
10791
Liveliness notifications to data readers created on multiple partitions may not happen
If a data reader is created on two partitions, say "A" and "B", then it will only receive liveliness notifications for the partition that is last lexicographically, i.e. only for "B", despite a new data writer being created on partition A..

Solution: The algorithm that determined whether a data reader's partitions match that of a data writer has been fixed to ensure that it supports a data reader with multiple partitions. This means that a notification can now happen for more than just the final partition in the list

OpenSplice v6.1.1p2

Report ID. Description
OSPL-1017/
10755
Durability crashes when alignment data contains only unregister messages
In the scenario where there are only unregister messages aligned by the durability service for a given partition-topic combination, the service would crash because an instance lookup would fail.

Solution: Durability is made robust against this kind of scenario.
OSPL-1035/
10764
DDSI2 failure to deserialize bounded strings of maximum length
DDSI2 validates all data coming in over the network, but the input validator erroneously considered strings in received network packets of which the length equalled the specified bound as being oversized.

Solution: The error in the validator has been fixed

OpenSplice v6.1.1p1

Fixed bugs and changes not affecting the API in OpenSplice 6.1.1p1

Report ID. Description
OSPL-892/
10091
DDSI2 can respond with incorrect set fragments to retransmission requests
The DDSI protocol allows reliable readers to request retransmission of individual fragments of large samples. DDSI2 could respond with fragments other than the ones requested, which could generally be masked by an eventual request for the full sample to be retransmitted, but would cause the communication to come to a complete standstill if a particular fragment always got lost. For example, when the rapid (re)transmission of a large amount of data systematically lead to a switch throwing away a whole range of packets.

Solution: DDSI2 now always responds with the requested fragments.
OSPL-919C# Examples do not compile on Windows 64 bit platforms
The C# Examples do not compile on Windows 64 bit platforms. This was caused by 2 problems:

- missing entries in the solution file

- bugs in the example source code

Solution: The missing entries have been added to the solution file and the bugs fixed in the example source code.

OpenSplice v6.1.1

Fixed bugs and changes not affecting the API in OpenSplice 6.1.1

Report ID.
Description
OSPL-301/
10110
handle.serial exceeds HANDLE_SERIAL_MASK

Two different perceptions of the maximum serial number for a handle
exist within the product. Once the serial becomes larger than the
smallest maximum, the reported error occurs.


Solution: The maximum serial number to be used is now to same in
both locations in the product.


OSPL-508/
9816
Idlpp crashes on invalid recursion.



Solution: idlpp will check if a type is defined before it is used
- except for sequences where recursion is allowed.


OSPL-635
10466
Unable to determine adapter name in windows

It was possible that when using windows OpenSplice is unable
to determine the network adapter name.


Solution: The defect in the name resolving mechanism is fixed
according to the MSDN page solution and a proper adapter name is resolved.


OSPL-637
10466
Handling loopback data in native networking

When using shared memory with native networking the configuration
will never 'see' a co-located single-process instance on the same node.
Secondly data that loops back (i.e. 'own sent data') is detected in a
sub-optimal way.


Solution: The defect in native networking is solved and a new
configuration item 'EnableMulticastLoopback' for native networking
is introduced to optimize loopback data. EnableMulticastLoopback specifies
whether the networking service will allow IP multicast packets within
the node to be visible to all networking participants in the node,
including itself. It must be TRUE for intra-node multicast communications,
but if a node runs only a single OpenSplice networking service and does not host
any other networking-capable programs, it may be set to FALSE for
improved performance


9963/

dds3426 / OSPL-646
DDSI2 used incorrect encoding for fragment data message headers

DDSI2 incorrectly used to generate and interpret fragmented data
message headers as if they were slightly extended versions of the
non-fragmented data message headers. This caused DDSI2 to be
non-compliant with respect to the standard and to fail to
interoperate with other vendors' implementations for large samples.


Solution: the setting and interpretation has been corrected. This
breaks backwards compatibility, but because DDSI2 is still in beta,
this does not constitute a change of policy. For those exceptional
cases where backwards compatibility is currently an issue, a setting
Unsupported/LegacyFragmentation has been introduced, which may be set
to true to continue using and interpreting the old message
format.


OSPL-780
Incorrect handling of ioctl return code

The return result from a call to ioctl should be interpreted as successful
if the result is not equal to ERROR. The existing code uses result equal
to zero as the criteria for success but positive non-zero values are also valid.


Solution: The defect in the abstraction layer is now fixed and
positive non-zero values values are now also valid.


OSPL-783
IPv6 DontRoute emulation incorrect

Due to lack of support for SO_DONTROUTE on some IPv6 stacks,
networking tried to emulate the behaviour by setting the hop-count
to 1. This is not functionally equivalent to SO_DONTROUTE.


Solution: The emulation of the option has been removed. When
set on an IPv6 configured networking service the option will be ignored.


OSPL-784
Erroneous messages logging when sending initial ACKs if multiple AC
messages were bundled in a single packet


Erroneous messages were logged when multiple ACK messages were bundled
into a single packet in the case of multiple partitons with Partition 1
only has a first ACK to be sent (no pending ACKs) and partition 2
has a first ACK and/or pending ACKs.


Solution: The defect in the ACK logging mechanism has been fixed
and now logs the correct messages.


OSPL-813
Consistent final value not always guaranteed with BY_SOURCE_TIMESTAMP

In the unusual scenario where a single writer updates an instance with the
same timestamp, a consistent final value for that instance was not guaranteed
across all subscribers. According to the DDS v1.2 spec this should be
guaranteed in this case.


Solution: When updating the administration of the readers the consistent
final value is guaranteed by incorporating a writer-generated
sequence number.


OSPL-821/
10098
DDSI2 socket receive buffer sizes are be too small to handle large packet bursts

Large incoming packet bursts could overwhelm the configured buffer
capacity of the network sockets in DDSI2 networking service. This was
dependent on many factors, in particular also on scheduling latencies
at the OS level.


Solution: The default receive buffer size is now the minimum of the new
Unsupported/MinimumSocketReceiveBufferSize option and the operating system
default UDP socket buffer size. The default value of 64kB should
suffice for most systems but can be increased where needed.


OSPL-827
liveliness count issue with multiple partitions

When using data readers accros multiple partitions the liveliness count
increments for all writers instead of only the writers connected to
the selected partition.


Solution: The defect in the liveliness count algorithm is now fixed
and now only the liveliness count for the writers in the selected
partition are updated.


OpenSplice v6.1.0g2

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0g2

Report ID.
Description
dds3554
e500v2 based builds need to include the VX_SPE_TASK option when spawning RTPs.

Updated e500v2 based builds to include the VX_SPE_TASK option when spawning RTPs.

OpenSplice v6.1.0g1

Report ID.Description
dds3554PowerPC P2020 and PPC32 vxworks 6.8, linux hosted builds now supported.
Added PowerPC P2020 and PPC32 vxworks 6.8, linux hosted builds.

OpenSplice v6.1.0p8

Report ID. Description
dds3508/
10342
spliced not running on LynxOS 5.
Problems with spliced not executing correctly on LynxOS 5.

Solution: Multiple fixes required, invalid makesystem options and some extra LynxOS posix support required.

OpenSplice v6.1.0p7

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p7

Report ID.
Description
8840 /

9350 /

dds2973 /

dds2590
Memory leaks during shutdown of native networking.

During the shutdown of native networking not all administration structures are freed.


Solution: The defect in the network termination algorithm is now fixed and all administration is correctly freed.

10065 /

dds3306
DDSI2 may erroneously decide CDR serialized data is invalid

The DDSI2 deserializer attempts to avoid allocating memory for sequences of obviously bogus
lengths by checking whether the remaining number of bytes is sufficient to encode some sequence
of the declared length. Unfortunately, it uses the wrong notion of the size of an element, which
can cause it to incorrectly declare a length to be bogus. This is dependent on platform, type and
the type and contents of any data preceding the sequence.


Solution: Always deserialize all data until the input is really exhausted.

10064 /

dds3339
Reliable communication fails with multiple connected RT networking services on one node

The statically configured portnumbers collide with multiple instances, causing unicast data not to
be received by all RT networking instances. For reliability related packets (ACK's, resends, etc.)
unicast is used on a static port (data-port + 1), even when broad- or multicast is configured. This
implies that multiple instances try to use the same IP-addres-portnumber combination, which is never
possible. This causes only the latest bound RT networking service to receive all ACK's and resends for
any instance on the same IP-address-portnumber combination, breaking reliable communication and causing
a lot of warnings to be reported regarding unexpected ACK's, etc.


Solution: RT networking uses a dynamically assigned portnumber instead of a statically configured portnumber for the reliability related packets.

10125 /

dds3391
OpenSplice DDS configured with multiple native network services and IgnoredPartitions configuration option set.

In the case that OpenSplice is used with multiple native networking services and IgnoredPartitions is configurated.
Writing multiple instances with a single dataWriter fails. The first instance will be written all further instances
will not be written.


Solution: The defect in the network administation algorithm in combination with ignored partitions is now fixed.

9963 /

dds3426

dds3478
DDSI2 used incorrect encoding for fragment data message headers

DDSI2 incorrectly used to generate and interpret fragmented data message headers
as if they were slightly extended versions of the non-fragmented data message headers.
This caused DDSI2 to be non-compliant with respect to the standard and to fail to
interoperate with other vendors' implementations for large samples.


Solution: The setting and interpretation has been corrected. This breaks backwards
compatibility. For those exceptional cases where backwards compatibility is currently
an issue, a setting Unsupported/LegacyFragmentation has been introduced,
which may be set to true to continue using and interpreting the old message format.


Fixed bugs and changes affecting the API in OpenSplice 6.1.0p7

Report IDDescription
9963 /
dds3426
dds3478
DDSI2 used incorrect encoding for fragment data message headers
DDSI2 incorrectly used to generate and interpret fragmented data message headers as if they were slightly extended versions of the non-fragmented data message headers. This caused DDSI2 to be non-compliant with respect to the standard and to fail to interoperate with other vendors' implementations for large samples.

Solution: The setting and interpretation has been corrected. This breaks backwards compatibility. For those exceptional cases where backwards compatibility is currently an issue, a setting Unsupported/LegacyFragmentation has been introduced, which may be set to true to continue using and interpreting the old message format.

OpenSplice v6.1.0p6

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p6

Report ID. Description
9963 /
dds3426
dds3478
DDSI2 fragment size is now configurable
DDSI2 never creates data messages containing a payload larger than the FragmentSize, any sample larger than the FragmentSize gets split into multiple fragments of FragmentSize each. These fragments are then transported independently (but may yet be merged into larger UDP datagrams).

Solution: This size is now configurable using Unsupported/FragmentSize, with a default of 1280 bytes. Values below 1025 bytes violate the DDSI2 specification, above approximately 65000 bytes it (probably) won't fit inside a single UDP datagram. Increasing the size will shift more fragmenting and reassembling to the IP stack, which is generally more efficient because it is done inside the network stack, but which is incapable of retransmitting individual lost fragments. Increasing it may also allow operating without any fragmenting at the DDSI level, which may help avoid interoperability issues.
dds3486 Third party licenses updates
OpenSplice Tester third party tool licenses were not documented in release notes.

Solution: Updated docs/html/third_party_licenses.html.

OpenSplice v6.1.0p5

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p5

Report ID.
Description
dds3467/
10259
Signal handling failing on DENX.

Signals were not being correctly handled for the DENX target


Solution: Use the generic POSIX implementation.

dds3217/9881

dds3430
Spliced shared memory leak on remote durability shutdown

A memory leak was found whenever a remote node was started and
then stopped while durability was also running.


Solution: When durability detected a remote node, it would
write an update into the system (and thus the shared memory on
the local node). The logic for this write wrongly performed a
double string creation for the same string. The second string
creation overwrote the pointer to the first created string, which
resulted in the first created string to be never freed when the
remote node disconnected. The solution was to remove the first
string creation, as it was superfluous.


dds3248/
9908
Partition expressions not matched properly.

In case an application publishes/subscribes to multiple partitions
and the list of partitions has names that are sub-strings of one
of the others in the list, some partitions may be ignored. Even
though communication within a node and communication over the
network using the native networking service still works correctly,
this issue causes communication over the network to fail when
using the ddsi networking service and it also causes listeners
not to be triggered on matched subscriptions and publications.


Solution: The error in the pattern matching algorithm in the
kernel has been repaired.


dds3399/
10139
Incorrect network statistics.

The networking service optionally keeps track of statistics that
can be inspected by means of the Tuner tool. After inspection it
turned out that the maxNumberOfPacketsResentToOneNode and
maxNumberOfBytesResentToOneNode statistics are showing wrong
values.


Solution: The maxNumberOfPacketsResentToOneNode and
maxNumberOfBytesResentToOneNode statistics are now showing the
correct values.


dds3416/
10152
Manual liveliness not working correctly

Specific circumstances, such as a manual liveliness, could trigger
a bug in the lease manager that would eventually cause the lease
manager thread to hang indefinitely. The result is that periodic
leases, such as the sending and receiving of heartbeats, is
stopped.


Solution: The lease manager was fixed.

dds3432/
10187
Applications SEGFAULT when the domain is not started.

In the case no DDS domain is running but there is still a dirty
shared memory segement present from an old instance of Spliced.
It can happen that when an application is started, the application
can crash with a SEGFAULT.


Solution: The defect is fixed and the application will no
longer crash because of this.


dds3455
The durability service should improve the memory used during alignment.

The durability service temporarily caches received alignment data
until the set for a specific partition-topic combination is
complete. The algorithm implemented there could be improved to
reduce the amount of memory used during this phase.


Solution: The durability service now stores unregistrations is
a much more memory-efficient way reducing the memory overhead for
alignment to a minimum.


dds3457/10241

dds3458/10242
Crash of networking and/or durability during due to memory exhaustion.

The networking and durability services could crash when the shared
memory was exhausted.


Solution: The services now check the available
memory threshold and does not claim more memory when the threshold
has been reached. Furthermore they will terminate when no more
memory becomes available within a few seconds.


OpenSplice v6.1.0p4

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p4

Report ID. Description
dds3443Added support for vxWorks 6.8.2 on MIPSI32R2sf
There was no port for vxWorks 6.8.2 on mips.

Solution: A build for vxworks 6.8.2 on MIPSI32R2sf has been added

OpenSplice v6.1.0p3

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p3

Report ID. Description
dds3217/
9881
Spliced shared memory leak on remote node shutdown
When a remote node comes (e.g., ospl start is executed on a remote node) and then leaves (e.g., ospl stop is executed on a remote node) the system, a structural increase in shared memory is observed.

Solution: A memory leak was fixed dealing with heartbeat message of the splice daemon being leaked. And a memory leak was fixed where durability history_kind was wrongly mixed with regular history depth instead of the value of the durability history depth.
dds3391/
10125
OpenSplice DDS configured with multiple native network services and IgnoredPartitions configuration option set
In the case that OpenSplice is used with multiple native networking services and IgnoredPartitions is configured. Writing multiple instances with a single dataWriter fails. The first instance will be written all further instances will not be written.

Solution: The network administration algorithm is now taking ignored partitions into account as well.

OpenSplice v6.1.0p2

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p2

Report ID. Description
dds3240Usability improvement for OpenSplice RMI
The rmipp compilation requires a step to also compile its output with idlpp. There is no need for a user to inititate this.

Solution: rmipp compilation now directly calls the idlpp step to remove unnecessary user action.
dds3299
Added Support for IPv6 on vxworks 6.7 and 6.8
Added Support for IPv6 on vxworks 6.7 and 6.8, including workarounds for issues with vxworks inet_pton, and inet_ntop ( Windriver TSR#1085626 )

OpenSplice v6.1.0p1

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0p1

Report ID.
Description
dds3348
Robustness of secure-networking service against malformed incoming packets

The secure networking service should be robust against malformed incoming packets,
but certain cases were (although detected) not handled correctly and could lead
to a crash of the secure-networking service.


Solution: Handling of malformed incoming packets has been fixed, so that they are correctly ignored.

dds3354/
10083
DBMSConnect - Bounded strings would get mapped by DbmsConnect to a VARCHAR column with width 6000

DBMSConnect ignored the length of a bounded string and treated it as an unbounded string, which is mapped to
a SQL'99 VARCHAR column with a width of 6000.


Solution: DBMSConnect uses the specified maximum length of a bounded string to determine the
appropriate width of a column.


dds3363/
10094
Installation of the OpenSplice daemon as a Windows service from the Visual Studio 2010 distribution fails with an abort.

Installation of the OpenSplice daemon as a Windows service from the Visual Studio 2010 distribution failed with an abort as
the installer used an obsolete API.


Solution: Installation of the OpenSplice daemon as a Windows service from the Visual Studio 2010 distribution no
longer fails with an abort as the installer no longer uses an obsolete API.


dds3365/
10098
DDSI - Unnecessary packet drops for large "best-effort" messages (>8Kb) when using DDSI2 on windows platform.

When receiving "best-effort" messages larger than 8kB via the DDSI2 service on the windows platform,
a packetdrop-rate was observed that was higher than expected. This was caused by the UDP receivebuffer
size on this platform, that defaults to just 8kB.


Solution: An enhancement has been implemented that will set the UDP receivebuffer size to 64kB if the
default value of a platform is lower than that. This will ensure that the UDP receivebuffers are big
enough for the largest supported packetsize.


dds3366
Shared Memory leaks in OpenSplice RMI

In OpenSplice RMI, each request and each reply uses a different instance. These instances
were not disposed and unregistered after the request/reply. The reply readers were not taking the samples
that were destinated to other clients. These two problems were leading to a shm leak : shm memory
consumption growing for each request/reply until the process ended.


Solution: After writing the request/reply, the corresponding writer disposes and unregisters
the corresponding instance. After taking it's reply, the reply reader takes all samples destinated to other clients.


OpenSplice v6.1.0

Fixed bugs and changes not affecting the API in OpenSplice 6.1.0

Report ID.
Description
dds2723
DataReader does not support the TIME_BASED_FILTER QoS policy

The time-based filter QoS policy allows for pacing of a DataReader, based on a minimum separation time when receiving samples.


Solution: The feature is now implemented and described in the OpenSpliceDDS Reference Manuals.

dds2784
The DomainParticipant find_topic() function blocks for the full timeout period

Where the topic of interest in the DomainParticipant find_topic() call
did not exist, the find_topic method was blocking for the full
timeout period even if the topic became available earlier.


Solution: If no matching topic is found on find_topic() call,
the function now checks for a matching topic every 10ms until a matching
topic is found or the timeout is reached.


dds2846
Issues with multiple domains on Windows

A number of problems exist in the Windows abstraction layer that become noticeable
if multiple domains are active and the default SHM mapping address is used.
File locks are not released causing problems at shutdown and kernel objects
(condition events, semaphores) are mixed up between the active domains.


Solution: A number of improvements were made to ensure a correct operation of OpenSplice on Windows.

dds3003
Cleanup problem in C++ PSM

When an application is terminated while particular entities are still in use by the C++ PSM, these
entities are not properly cleaned-up and freed. Depending on the context this could cause a crash
or hang during shutdown.


Solution: The cleanup routines of the affected entities were changed to take into account
additional constraints to ensure a proper cleanup under all circumstances.


dds3023
Crash in writer history cache management

Under some circumstances the set of samples belonging to an instance
in the writer history cache could become corrupted and cause a crash.


Solution: The area of code was reviewed and improved to remove this problem.

dds3062
Synchronization error while shutting down spliced

A thread tried to access the spliced user-space object after it was destroyed.


Solution: Spliced now waits until the thread has finished before
destroying the spliced user-space object.


dds3125/
9463
Idlpp does not handle -I correctly and does not include the directory
of where the IDL is located


idlpp does not handle -I correctly when the paths end with a backslash.
This typically happens in Visual Studio, because macros always end with
a backslash. Also the include the directory of where the IDL is
located is missing from the include path.


Solution: Each last backslash from the include path is now removed
and the include the directory of where the IDL is located is now
added to the include path.


dds3142
Durability crashed if no configuration was provided

Because durability did not load the default values when a configuration (URI) was omitted on
the commandline, the configuration was corrupt, which crashed the service.


Solution: The service now also loads default settings when a configuration is not available.

dds3147/dds3189/
9725
DCPS C++ TypeSupportFactory object leakage

The C++ TypeSupportFactory leaks in case its associated TypeSupport
is registered with a DomainParticipant due to a missing decrease of
the reference count of that object in the API itself when the
DomainParticipant is deleted.


Solution: The reference count of the object is now correctly decreased when a DomainParticipant, that has the type registered, is deleted.

dds3148/
9726
Maximum UDP payload size could not be configured

DDSI2 used a default maximum payload size for the payload of UDP
packets which could cause issues on networks that don't support
fragmentation of UDP frames.


Solution: A configuration option has been added that allows the
maximum payload size to be configured. The
DDSI2Service/Unsupported/MaxMessageSize element specifies the
maximum size of the UDP payload ([def] 4096) that will be used by
DDSI2. DDSI2 will maintain this limit within the bounds of the DDSI
specification. This currently means that even though MaxMessageSize
is set below 1192, messages with a payload of up to 1192 may still
be observed.


dds3154/
9756
Heap memory leakage due to Java based query conditions.

The copy routines for a sequence of strings for the DCPS Java API
contained a memory leak due to the fact a release flag wasn't set to true.


Solution: The release flag has been set to true.

dds3156/
9753
Reliablility problem in networking when running multiple nodes.

When running real time networking and nodes are communicating over a reliable channel,
it is possible that when a node is shutdown other nodes in the network
start to lose communication with each other due to a corruption in the
network administration.


Solution: The defect in the network administation algorithm is now fixed.

dds3168/
9771
Destruction of ErrorInfo in C++ could cause crash.

Due to a bug in the C++ language binding for the (unsupported) ErrorInfo
API a crash could occur.


Solution: The bug has been resolved, allowing proper destruction
of ErrorInfo objects in the C++ language binding.


dds3221
Using hostname as address of a NetworkPartition fails

When a valid or invalid hostname is used as the address of a
NetworkPartition of the network service, the error 'ignoring invalid
networking address ' is reported and no communication takes place.


Solution: The defect was in the hostname resolving algorithm and is now fixed.

dds3245
Durability MMF store leaks unregistrations on injection of persistent data

To make sure that instances are not registered by DataWriters that no longer exist
(they cannot because the system has been restarted), the durability service will
inject a self created unregister message for each unique DataWriter for an instance
and that is proper behavior. However, the unregister message needs to be freed after
it has been injected and that part is missing. This causes every unregister message
on instance injection to leak.


Solution: Unregister messages are now freed after re-publishing them.

dds3266
Crash in signal handler due to uninitialized value

During code analysis, a possible scenario was detected that could results in
a crash in the signal handler if it's thread received a signal before a
value was initialized.


Solution: The code has been updated to avoid this possible scenario.

Fixed bugs and changes affecting the API in OpenSplice 6.1.0

Report ID. Description
dds751 Change in ReaderLifecycle QoS (invalid sample setting)
The QoS setting that determines if OpenSplice creates invalid samples to communicate state changes, called 'enable_invalid_samples', is now deprecated. Invalid samples, in the past, could either be enabled or disabled. There is a replacement QoS setting, called 'invalid_sample_visibility', which accepts three values:
- MINIMUM_INVALID_SAMPLES: Acts like the old enable_invalid_samples = true, an invalid sample will be created if there's no regular sample on which the state change can be piggy-backed (this is the default behavior).
- NO_INVALID_SAMPLES: Acts like the old enable_invalid_samples = false, no invalid samples are created.
- ALL_INVALID_SAMPLES: Currently not implemented, but in the future will create an invalid samples for all state changes even if a regular sample is available.
Using the QoS deprecated setting will cause a message to be logged to the info log. This QoS will be removed from the product in the future. If applicable it is recommended to switch application code to the new invalid_sample_visibility setting instead.

Solution: The default DataWriter reliability QoS is now set to RELIABLE in OpenSplice's API.
dds2676 Default DataWriter reliability QoS is set to BEST_EFFORT
OpenSplice default DataWriter reliability QoS was set to BEST_EFFORT. This was conflicting with the spec which states that default DataWriter reliability QoS should be RELIABLE.

Solution: The default DataWriter reliability QoS is now set to RELIABLE in OpenSplice's API.
dds2806 Domain ID change from string to integer
The DDS API prescribes a create_participant() method to create a DomainParticipant. A DomainParticipant is the entry-point for an application to a specific Domain. To be able to create a DomainParticipant for a specific Domain, the create_participant() call requires a DomainId_t as parameter. In the specification the type of this DomainId_t is 'native' meaning that every vendor is free to choose its own type. In OpenSpliceDDS the type of a DomainId_t was a string and represented either the name of the Domain or a URI that points to the location of the configuration for the Domain to connect too. This has now become an integer domain ID. With this change OpenSpliceDDS now complies with other vendors on the DomainId_t type and the DDS interoperability specification (DDS-I) can use it now to select the port-number for discovery for a specific Domain.

Solution: The feature is now implemented and described in the OpenSpliceDDS Reference Manuals.
dds3061 DDSI v1 removed from the codebase
The deprecated DDSIv1 code is now officially removed from the source code base and product APIs. DDSI2 should be used.

Solution: The feature is now implemented and described in the OpenSpliceDDS Reference Manuals.

Related

Release NotesOpenSplice
twitter logo linkedin logo
News and Events
Copyright © 2022 ZettaScale Technology Ltd. All Rights Reserved