Back to Release Notes PageBack

Fixed Bugs and Changes V4.3

Contents


This page contains a list of all bugfixes and changes incorporated in OpenSplice V4.3 series of releases

Release Highlights

OpenSplice DDS V4.3.1 contains some minor new features:

OpenSplice DDS V4.3 contains some significant new features:

Fixed Bugs and Changes not affecting API

4.3.2

Report ID. Description
4896
dds529
Inconsistent fragments size settings leads to crash of networking service.

Inconsistent fragments settings in the configuration of OpenSplice lead to deserialisation errors and finally a crash of the networking service.
Solution:When a message is received with a different fragment size that the receiving side a warning will be reported once per channel in the ospl-info log and the message will be discarded.

5397
dds740
Coredump in dataReader::_narrow function

A Listener on a DataReader could already trigger before the language specific entity was created, causing a NULL-pointer to be passed as an argument to the listener call-back.
Solution: The entity is internally created first and enabled after that to prevent the listener from triggering too early.

6948
dds1962
Performance issue when reading large number of samples

The read time per sample increases dramatically when reading a large number of samples.
Solution: An internal algorithm had a quadratic complexity and has been re-written.

6962
dds1967
Loosing data when communicating on the same host

Sent data can get lost unexpectedly due to an error in the resend mechanism.
Solution: The DataWriter now 'remembers' whether a sample has been sent before storing it in its history or it has been stored without even trying to send it. In case it has never been sent before, the 'regular' delivery path is used instead of the slightly different path used for 're-sending'.

dds1970 Samples in transient store are always stored ordered by source timestamp

Samples that are published with transient durability should be stored in the transient store as specified in the PresentationQoSPolicy of the matching Topic. Right now they are always stored BY_SOURCE_TIMESTAMP, but the Topic could also ask for BY_DESTIONATION_TIMESTAMP.
Solution: The durability service now stores data according to the PresentationQoSPolicy of the Topic.

dds1974 Ospl start on Windows : starts a second daemon if one already exists

"ospl start" on windows will not halt if a matching DomainName already exists (as done on Unix). This can lead to lots of DBF files remaining, and spliced's that cannot be stopped without TaskManager.
Solution: ospl now checks whether a Domain with this name is already running before starting it.

dds1976 Osplconf error with standard ddsi xml file on distribution

osplconf gives an error message about the port being greater than 32000, but user ports go all the way to 62000+.
Solution: The osplconf tool has been modified to accept ports up to 65535.

dds1980 Incorrect networking-socket(s) creation for unicast connections

When creating a GlobalPartition that exists solely of unicast addresses, the TTL and DontRoute options can not be set correctly.
Solution: The DontRoute and TTL behaviour can be configured in the configuration file now and won't be set to True always.

dds1981 Osplconf: error in configuring discovery enabled status

the 'osplconf' tool assumed that there's an 'active' boolean element to enable/disable discovery whereas in the networking service, there is no such flag but instead similar to channels an 'enabled' boolean attribute that should be controllable by the configurator.
Solution: The enabled attribute has been added to the 'Discovery' element and the 'Active' element of 'Discovery' has been removed from the configurator.

dds1982 Networking & configurator: DontRoute/TTL issues

The DontRoute setting was not interpreted as a true/false boolean, but as a 0/1 integer (where the configurator rightfully interprets it as true/false) and the configurator tool didn't support setting the DontRoute nor TimeToLive options for Discovery.
Solution: The DontRoute option is now interpreted as boolean by the networking service and The DontRoute and TimeToLive options have been added as elements under 'Sending' in the configurator tool.

dds1983 The networking service uses incorrect defaults for 'reactivity-checking' and 'topology-checking'

The default networking-settings for 'channel reactivity' and 'discovery topology' were incorrect in the sense that a topology change was detected in 6 seconds (1000 msec interval * 6 death-detection) whereas the reactivity-check for channels was set to 3 seconds (10 msec resolution * 100 Maxretries * 3 recovery-factor). In combination with the recently introduced reconnect feature this could lead to unstable reconnect-behavior.
Solution: The default value for the interval for discovery has been changed to 3 Hz. Therefore topology changes are detected in 2 seconds(333 msec interval * 6 death-dectection).

dds1987 Wrong message when shmat returns -1.

A wrong message is printed when attaching to shared memory fails and only the error code is printed.
Solution: The message has been corrected and next to the error code, the associated error message is printed as well.

dds1989 Problem comparing keys when using char array as topic key (using #pragma cats) because of '\0' char.

When there is no '\0' terminator in the user defined character array, the internal string representation was not '\0' terminated. Therefore reading and comparing the string was failing.
Solution: If there's no '\0' terminator in the character array, it is still appended to the internal string. The complete behaviour is described in the OpenSplice IDL pre-processor manual in section 1.5.2

dds1992 Random byte attack / CrcCheck payload size crash.

The networking service died if the message had less than 20 bytes UDP payload and started with 'SPL1'..
Solution:The networking service has been made more robust to prevent it from crashing and simply ignoring this data.

dds2004 DLRL DCG doesn't generate correct C++ code for Maps and Sets.

The DLRL C++ code generation w.r.t. Maps and Sets was incorrect. It generated a getter and setter for all attributes including the Map and Set attributes, but the return type for Maps and Sets was not the actual type as specified in the XML mapping file.
Solution:The DCG has been changed to generate return types for Map/Set types as specified in the XML mapping file by the user.

6994
dds2006
Multicast network partitions only work if global partition is also multicast.

Network partitions that are configured as multicast didn't work if the global partition wasn't multicast also.
Solution:The networking service now supports multicast on network partitions even if the global partition isn't configured with multicast.

4.3.1

Report ID. Description
dds1345 Documentation update

Networking socket option for DontRoute now added to the Deployment Guide.

dds1676 Robustness fixes for windows platform

Better handling of processes and threads to improve robustness.

6750
dds1752
Correction to DeathDetectionCount definition in Deployment manual.

The deployment manual stated valid values for DeathDetectionCount are 1-6. The valid values are 1-infinity.

6792
dds1797
Character array as a key

See Release Highlights above.

dds1845 VxWorks kernels for mcpn805 do not correctly pick up the netmask from the bootloaded

Solution: See the known issues on a workaround for this WindRiver issue.

dds1864 mmstat now supported on VxWorks 6
dds1872 Protection from random byte attacks on the networking service

See Release Highlights above.

dds1888 Problem with the stability of the durability service.

The durability service crashes on deserialization of a NULL sequence. A NULL sequence is not allowed as it should have been deserialized as an empty sequence.
Solution:Fixed the error that deserialized an empty sequence into a NULL pointer to actually create an empty sequence.

6866/6865
dds1905/dds1923/dds1924
Stopping ospl using signals

See Release Highlights above.

dds1911 Location of OpenSplice temporary files

User can now configure the location of OpenSplice temporary files using the OSPL_TEMP variable. See Deployment Guide for more information.

6869
dds1912
Failure to restore reliable channel after networking service crash

Not all administration in shared memory was cleaned up when the networking service crashed, causing a restart of the service to fail.
Solution: An additional signal handler is installed for all potentially raised signals when crashing. This handler cleans up all administration in shared memory.

Note that for this fix to work when using the Java DDS API on POSIX-compliant platforms, the full path to the jsig library (libjsig.so) must be set in the LD_PRELOAD environment variable before starting an application. This library is part of your Java distribution (typically located in /lib//libjsig.so). See section 1.3 of the "DCPS Java Reference guide" for more information

6938
dds1954
Reliability backlog mechanism in the networking service is incorrect.

The mechanism didn't trigger the correct behaviour in all situations.
Solution:The algorithm that implements the mechanism has been corrected.

4.3p1

Report ID. Description
6803
dds1810
Service 'networking' DIED problem.

The networking service sometimes crashes when it re-connects to a remote node (only when configured to allow re-connections).
Solution: Fixed algorithm in networking service that handles re-connecting nodes.

dds1842 Zombie-processes after a service that has died is being restarted.

The exit status of a died service was not retrieved by the splicedaemon before restarting it.
Solution: Made the splicedaemon retrieve the exit status from a service before restarting it.

dds1863 Reconnect doesn't work under high-load.

The networking service sometimes crashes when it re-connects to a remote node (only when configured to allow re-connections).
Solution: Fixed algorithm in networking service that handles re-connecting nodes.

dds1873 VxWorks 66 applications sometimes don't terminate.

There is an issue with 'phtread_join' on VxWorks6.6 that has been acknowledged by WindRiver.
Solution: A workaround to prevent the issue from occurring has been implemented.

6838
dds1878
Crash when reading InternalFlight.

The IDL pre-processor generated wrong code for copying unions with an array branch.
Solution: Fixed the IDL pre-processor C++ code generation for copying a union branch with an array.

6850
dds1889
Deadlock in OpenSplice services or application.

Due to an error in the order in which object were locked, the services or application could deadlock.
Solution: An error in the locking strategy in the kernel has been fixed.

dds1891 Unnecessary memset causes performance degradation.

The DLRL unnecessarily did a memset in DLRL_Exception_init
Solution: The memset has been removed to improve DLRL performance.

6851
dds1895
Missing DDS_DCPSBVLSeq type declaration.

IDL pre-processor output for stand-alone C++ did not compile if the IDL contained a complex bounded sequence.
Solution: The missing BVL.h file has been made available in the distribution and the missing include statement has been added to the existing sacpp_mapping.h file.

4.3

Report ID. Description
dds1822 Opensplice default configuration uses ports 3340 3350 and 3360 which are IANA reserved.

The default configuration now uses 53340, 53350, 53360.

dds1821 Networking Service now does not pick loopback if it is the first enabled BROADCAST interface.

The networking service would pick the first broadcast enabled interface when the "First Available" QoS was used, which may have been a loopback interface. This has been changed to ignore loopback interfaces unless there is no other type of broadcast interface available. Change made due to Windows operating system change in behaviour.

dds1784 DataWriter with lower ownership_strength cannot take over ownership after restart.

Fixed internal bug with handling ownership of already deleted DataWriters.

6763
dds1770
Crash in Waitset during application termination for non guard condition
Applications sometimes crash during termination when a condition in a waitset is being triggered at the same time.
Solution:A bug in the internal Waitset triggering mechanism has been fixed.
6762
dds1768
DLRL crashes when a DCPS exit handler starts to destroy instance handles used by the DLRL.
DLRL applications sometimes crash during termination when underlying entities have already been deleted during exit handling.
Solution:The internal DLRL exception mechanism now only keeps track of the first exception that occurred and is made more robust to prevent overflow situations.
dds1761 Network partition mappings are not working properly.

The networking service sometimes sent out packets using the default networking partiton where it should have used one specifically configured for the logical DDS partition where the sample in the packet was published in.
Solution:The networking partition is now selected from the packet itself instead of from the default in the networking channel.

dds1753 TRANSIENT_LOCAL not supported while it is mandatory.

Removed the restriction that disabled the feature. Documentation still to be updated.

dds1741 4.2 Tuner crashes when reading a 4.1 properties file

Using the Tuner properties file from OpenSplice V4.1 with OpenSplice V4.2 causes the Tuner to crash.

Solution:Implemented specific properties file name handling for each release. Each version of DDS will uses its own specific property file.
6739
dds1735
Networking thread consumes 100% cpu

The problem occurred because resources (bufferlocations for networkpackets) were leaking when connections to remote nodes were lost and data was received from them afterwards. Packets that are received from nodes that are in the state "disconnected" are discarded, but the buffers used to store these packets were not properly released.

Solution:These buffers will now be properly released with this fix and the service has been made more robust. If this (running out of resources) happens again, networking will not go into 100% load, but will terminate itself.
dds1733 Java standalone PingPong example

The bounded string sequence is failing as null is passed to it

Solution:Updated example to pass 0 instead of null.
dds1730 The DBMSConnect service doesn't handle out of order updates correctly

In order to be able to supply order preservation over instance boundaries, the DBMSConnect service now sorts the incoming data based on the write-time of the sample.

dds1715 Fixed the standalone C ping pong example using DDSI for Solaris.
dds1712 Fixed the -t option with the standalone C ping pong example using DDSI as it did not terminate the example.
dds1710 Fixed the compiler warnings on examples with VxWorks 6.6.
dds1705 read_next_instance_w_condition function hangs
Correction made to stop read_next_instance_w_condition function hanging when the const gapi_instanceHandle_t a_handle is given a value of -1.
dds1694 Unsafe notifications in DDS Kernel
Intermittent corruption of shared memory when high usage of threads.
Solution:Implemented correct locking protection to prevent memory corruption.
6688
dds1668
Java application crash in v_subscriberNotify
Java applications sometimes crash when it subscribes to a new partition.
Solution:A bug in the internal notification mechanism has been fixed.
6687
dds1667
Durability crash in c_free during system startup
The durability service crashes sometimes during startup during a c_free call.
Solution:The c_free call no longer dereferences the object after the reference count was decreased.
6675
dds1652
Unambiguous network reports are needed
Unambiguous network reports are needed that identify either node topology changes detected by the discovery protocol or reliability loss on the reliable channels.
Solution:The reports were extended and improved.
dds1635 Pseudo simultaneous launch of OpenSplice processes failing.

Increased number of available connections to spliced and made locking mechanism robust against temporary unavailability of a connection.

6642
dds1624
BAD_PARAMATER returned from 'register_type' operation.

The register_type operation was incorrectly checking parent scopes. It now only looks in the 'current' scope for the 'new' module to prevent duplicate type info.

dds1576 Topic and Partition Read/Write access QoS policy

See Release Highlights for more information.

Fixed Bugs and Changes affecting API

4.3.1

Report ID. Description
dds1619 Extension of dds1631 (below) with new ExtDomainParticipantListener and change to ExtTopicListener

Interface implemented, but no implementation code. This will be implemented in OpenSplice DDS v5. Only supported for CORBA cohabitation APIs in Java and C++.
interface ExtTopicListener : TopicListener {
void on_all_data_disposed ( in Topic):
} ;

interface ExtDomainParticipantListener : ExtTopicListener, DomainParticipantListener {
} ;

4.3

Report ID. Description
dds1745 Control and Monitoring APIs moved to community version

These APIs are now exposed - include/cm.

dds1711 Changed void*-typed implementation functions in DDS::DataReader_impl and DDS::DataWriter_impl to be not virtual

This change was made to reduce a number of warnings on the Solaris 10 Studio 12 build.

dds1631 Addition of new interface ExtTopicListener

Interface implemented, but no implementation code. This will be implemented in a future release.
interface ExtTopicListener : TopicListener {
void on_all_data_disposed ( ):
} ;

dds1579 Process exit behaviour

Addition of -f option to ospl tool. See Release Highlights for more information.



PrismTech TOP
Top