OpenSplice DDS V4.3.1 contains some minor new features:
In order to protect OpenSplice network packets from malicious attack the CrcCheck(cyclic redundancy check) configuration item has been added. CRCs are specifically designed to protect against common types of errors on communication channels. When enabled the integrity of delivered network packets from one DDS process to another is assured.
OpenSplice DDS domain service can also be stopped by sending a signal to the ospl process, assuming the process was started using the '-f' option. See the Deployment Guide for more information.
By default OpenSplice DDS does not support using a character array as a key. Using an (character) array as a key field is not desirable. However from a modeling perspective or simply due to a legacy data model this may be required. To facilitate these scenarios OpenSplice DDS introduces the cats pragma which allows for character arrays to be used as a key. See the PreProcessor user manual for more information.
OpenSplice DDS V4.3 contains some significant new features:
Starting the Domain Service with the exit code option
The Domain service can be started with the option '-f' which behaves almost
exactly the same as the normal start-up. The difference is that the
ospl tool will not return directly but instead block and it will return
an exit code upon termination. This exit code can be interpreted by a
supervisory process to determine if the service should be restarted,
the node should be restarted or nothing should be done. The following
exit codes are supported:
The ability to configure access restrictions to a set of Topics or Partitions on a node for applications.
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. |
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. |
6948 dds1962 |
Performance issue when reading large number of samples
The read time per sample increases dramatically when reading
a large number of samples. |
6962 dds1967 |
Loosing data when communicating on the same host
Sent data can get lost unexpectedly due to an error in the
resend mechanism. |
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. |
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. |
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+. |
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. |
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. |
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. |
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. |
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. |
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. |
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'.. |
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. |
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. |
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. |
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. |
6938 dds1954 |
Reliability backlog mechanism in the networking service is incorrect.
The mechanism didn't trigger the correct behaviour in all situations. |
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). |
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. |
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). |
dds1873 |
VxWorks 66 applications sometimes don't terminate.
There is an issue with 'phtread_join' on VxWorks6.6 that
has been acknowledged by WindRiver. |
6838 dds1878 |
Crash when reading InternalFlight.
The IDL pre-processor generated wrong code for copying
unions with an array branch. |
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. |
dds1891 |
Unnecessary memset causes performance degradation.
The DLRL unnecessarily did a memset in DLRL_Exception_init |
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.
|
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. |
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. |
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++.
|
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.
|
dds1579 |
Process exit behaviour
Addition of -f option to ospl tool. See Release Highlights for more information. |