Back to Release Notes PageBack

Fixed Bugs and Changes V5 series

Contents


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

Release Highlights

OpenSplice DDS V5.3 contains the following new features:

OpenSplice DDS V5.2.2 contains the following new features:

OpenSplice DDS V5.2.1 contains the following new features:

OpenSplice DDS V5.2 contains the following new features:

OpenSplice DDS V5.1.1 contains the following new features:

OpenSplice DDS V5.1 contains the following new features:

Fixed Bugs and Changes not affecting API

5.3.0p3

Report ID. Description
dds2362 Deadlock possible with shutdown of splice daemon
Clean up code in the splice daemon could become locked due to a race condition.

Solution: Re-factored the clean up process to eliminate the race condition.
5097/
dds729
Splice daemon may consume 100% CPU.
When using multiple domains on Windows, services and application processes sometimes requested access to a domain from the wrong splice daemon. This caused unpredictable behaviour in both services and user applications.

Solution: As there is only one splice daemon per domain the domain name has been made part of the name of the pipe making the pipe name unique. Furthermore, an illegal request from the Tuner tool to the splice daemon pipe on initialisation has been removed.
7162/
dds2164
OSPL takes a long time to stop.
Update on previous fix to allow handling of 0.0 instead of just 0 for time argument.

Solution: Corrected parameter handling.
7319/
dds2285
Using dispose_all_data can cause the splice daemon to crash
When a remote node calls a dispose on a local topic instance that does not exist then splice daemon will crash

Solution: Check to ensure local topic instance exists and if not then queue the dispose request until it does.

5.3.0p2

Report ID. Description
7444/
dds2384
Incorrect memory allocation causing ospl deamon to stop immediately after starting
The implementation of the code to externally monitor OSPL instances on local/remote node used strlen incorrectly causing memory corruption. This can have the effect of causing the ospl daemon to stop immediately after starting.

Solution: Remove the use of strlen and use MAX_HOST_NAME_LENGTH variable
dds2180 Windows cannot start and stop 2 separate spliceds with separate domains
An error occurred starting 2 separate spliceds and domains on the same windows machine. This was because the _ospl_servicePipeName parameter is not unique: When the second spliced is started is uses the same pipe name (and as the max instances param is set to 8) CreateNamedPipe fails because it has exceeded the max instances.

Solution: As there is only one splice daemon per domain the domain name has been made part of the name of the pipe making the pipe name unique.

5.3.0p1

Report ID. Description
7444/
dds2367
Problems with OSPL Log Report Plugin
The initialize and finalize methods of the report plugin were being called twice. This was because the report plugin registration and unregister had been implemented in 2 different places but were actually only needed in 1 place. This also caused the report method of the report plugin to be called after the finalize method had been called.

Solution: Changed implementation to only call report plugin register and unregister once.

5.3

Report ID. Description
6494
dds1506
Datareaderlistener is still being triggered while the datareader and all related objects have already been freed
When a datareader is being deleted at the same time it is being triggered asynchronously via on_data_available() then the application may crash. This is caused by an incorrect check that validates whether or not a listener thread should be terminated.

Solution: The error in the checking algorithm has been repaired.
dds1629 More helpful error message when using Tuner
When using the Tuner, an error message "Supplied URI is not available" would be returned, but this could occur if the URI is not available or the shared memory segment could not be mapped.

Solution: The error message has been updated.
dds2054 Gracefully shutdown OpenSplice on machine shutdown
If a machine is shutdown during the operation of OpenSplice, it is possible that OpenSplice will not adequately clean up all temporary resource files. This can be particularly an issue on Windows because the shared memory is represented by a mapping to a physical file and can cause problems restarting the domain.

Solution: On Windows, "ospl start" has been improved to check for and remove resource files that do not relate to running processes, prior to starting the domain. In future releases this will be improved to remove OpenSplice processes that may be running but are associated with invalid resources file.
7051
dds2071
-n option added to idlpp to override the suffix for the ORB header file include
-n <include-suffix>
Overrides the suffix that is used to identify the ORB dependent header file (specifying the data model) that needs to be included. Normally the name of this include file is derived from the IDL file name and followed by an ORB dependent suffix (e.g. 'C.h' for ACE-TAO based ORBs). This option is only supported in Corba cohabitation mode for C++. In all other cases it is simply ignored.
Example usage: -e .stub.hpp
(For a file named 'foo.idl' this will include 'foo.stub.hpp' instead of 'fooC.h', which is the default expectation for ACE-TAO.)
dds2081 Issues with compliance of tooling over different platforms
The tooling delivered with OpenSpliceDDS (like mmstat) did not have the same command-line options on all supported platforms.

Solution: The options have been made consistent for all supported platforms.
7068
dds2083
Memory leak for arrays
When an array was freed, and thus the references contained within that array, the size was incorrectly determined, which caused a memory leak as not all references were freed.

Solution: So now when the collection is an array, the size is determined by the maximum size field of its type, which is always set, since an array is always fixed length.
dds2128 Wireshark plug-in not compliant anymore
The Wireshark plug-in is no longer showing correct information with the updates in the network format.

Solution: Updated the Wireshark plug-in to correctly interpret the newest networking format.
7162
dds2164
OpenSplice takes a long time to stop when using the ospl -f option
OpenSplice at least takes multiple seconds to terminate when sending a TERM signal.

Solution: Setting the configuration of the already existing ServiceTerminatePeriod to "0.0" will now be interpreted by all OpenSplice services as immediate request to terminate without cleaning up. As a result, all services terminate immediately and do not clean-up anything, except for the shared memory segment that is still destroyed.
dds2228 Registering a type compiled with idlpp -j option causes JVM crash
Calling register_type on TypeSupport classes that have been generated using the "-j" option made the application crash. This was caused by the fact that an internal algorithm did not substitute the name of the type with the by idlpp generated type name.

Solution: Extended the internal algorithm to substitute the name.
dds2247 Code generated by idlpp (C++) for multidimensional array does not compile
The IDL pre-processor did not generate correct code to copy the contents of multidimensional arrays.

Solution: Updated idlpp to correctly handle multidimensional arrays.
7272
dds2254
Error message not displayed
The error message
"Description : shmat failed for 1 with errno 22 ()" is unclear.

Solution: Updated the error message to show the string representation of the error between parentheses or show "Unknown error" otherwise.
dds2274 Network communication on Windows does not work in case of multiple network partitions
When multiple network partitions were configured for the networking service, communication on Windows did not occur due to a bug in the algorithm that matches partition-topic combinations to a multicast address.

Solution: The error in the matching algorithm has been repaired.
dds2276 Network partition-name conversion to hash results in always the same hash
The networking service calculates a hash value for every configured network-partition. Due to an error in the hash algorithm the same hash was calculated for all network-partitions.

Solution: The error in the hashing algorithm has been repaired.
dds2278 Not able to view all DDS nodes
When discovery for networking is enabled, the data that is published before the other node has been detected is not forwarded by the networking service even though it does see the information.

Solution: During the start-up of the networking service, it will now initially assume there is a remote node available and send the data over the network, before actually starting to rely on discovery.
7319
dds2285
Using dispose_all_data can cause the splice daemon to crash
Sometimes internal transaction messages were accidently stored as actual application samples after they were handled.

Solution: The algorithm now checks whether a message is a transaction message and if so, will not store it anymore.
7329
dds2294
IDL Sequences in C#
Generated C# classes for a sequence of structures failed to write a sample.

Solution: The marshallers for sequence of structures was incorrect and has now been fixed.
7371
dds2304
Memory leak when continually registering and unregistering the same instance of a sample.
Some piece of administration in shared memory was not freed.

Solution: Made sure the administration is freed.
7373
dds2305
mmstat does not display valid values for 64-bit architecture
The mmstat tool was not able to display memory sizes above the 32-bit boundary, because a 32-bit type was used to store the size.

Solution: Updated the type of the field to be 64-bit on 64-bit platforms.
Bugzilla#34/
dds2309
Memory growth (leak) in ospl when sending messages with strings in sequences
The memory used by ospl as reported by mmstat grows each time a message is sent when the message contains a sequence of strings or a sequence of structures that contain strings.
The internal algorithm that generically frees data in shared memory uses the available meta-data to know how to free the data. Due to an error in the meta-data, the algorithm could omit freeing a structure, causing memory leakage.

Solution: Fixed the error in the meta-data for sequences.
dds2313 Application may crash during execution when using sequences
The internal algorithm that generically frees data in shared memory uses the available meta-data to know how to free the data. Due to an error in the meta-data, the algorithm could free a structure in the wrong way, causing the application to crash.

Solution: Fixed the error in the meta-data for sequences.
7444/
dds2335
Multiple instances with the same key
Character array fields can be marked to be stored as strings internally (using the pragma cats). When a sample is written in Java, the internal string had rubbish attached to the end of the string. This was caused by the algorithm that copies samples from heap into shared memory since it did not add a '\0' terminator to the string in case the source is a character array causing the middleware to interpret the string up to the first '\0' in memory after the start of the string.

Solution: Extended the copy algorithm to add a '\0' terminator at the end of the string.

5.2.1p3

Report ID. Description
7444/
dds2367
Problems with OSPL Log Report Plugin
The initialize and finalize methods of the report plugin were being called twice. This was because the report plugin registration and unregister had been implemented in 2 different places but were actually only needed in 1 place. This also caused the report method of the report plugin to be called after the finalize method had been called.

Solution: Changed implementation to only call report plugin register and unregister once.

5.2.1p1

Report ID. Description
7157/
dds2158
Bad parameter passing in reportPlugin initialize.
The report plug-in function definitions and calls did not comply with API defined in deployment guide

Solution: The function definitions have been compliant with the deployment guide.
7270/
dds2251
Unable to publish an InternalFlight.
Java application crashes during the writing of a sample. The issue was that a size marker used in creating the Java meta data was of type "short", which is too small.

Solution: A bug has been fixed in the Java implementation of OpenSplice which restricted the size of the meta model of an IDL component (as signified by a #pragma keylist) to 2^16 : 65536. This has been rectified and the maximum size of an IDL component's meta model is now 2^32 : 4294967296.

5.2.1

Report ID. Description
7247/
dds2229
The spliced process goes to 100% load
When running on a 64-bit platform, the spliced goes to 100% load in some situations when accessing a virtual memory address above the 32-bit range, because of a wrong cast being done in an internal algorithm.

Solution: The wrong cast has been corrected.
7250/
dds2237
OSPL unable to create a 4GB shared memory segment
When specifying a database size over 2GB in the configuration file, OpenSplice could not be started. This was caused by two things:
  • The size of the database was casted to a signed integer internally (so max 2GB)
  • The default address where it was mapped into the virtual address space of each process participating in DDS conflicted with already existing things that were mapped into a process


Solution: The size is now an unsigned long long for 64-bit platform to solved the first issue. To solved the second issue, a default address of 0x140000000 has been configured for 64bit platforms, but the suitability of this value will vary depending on the size of the database that is required, and also with the process properties at the operating system level. If the address is not suitable, the error log file will describe this. On linux the "pmap" utility when ran with the "-x" option can be used to view the mapping addresses in use by a particular process. A mapping address value is suitable if the addresses that immediately follow it (up to the size of the required database) are not in use. Refer to the OpenSplice_Deployment guide for details of the OpenSplice/Domain/Database/Address attribute.
dds2243 Topic name for Read/Write access QoS policy interpreted as type name
The XML configuration allows for topic access elements ('OpenSplice/Domain/TopicAccess') to be defined which determine whether reader and/or writers are allowed to be created for a specific topic expression (by means of the 'topic_expression' attribute). A bug existed in the implementation of this feature where the topic expression was compared to the type name instead of the topic name. In effect no proper access control could be defined for topics.

Solution: The implementation has been changed so that it now compares the topic expression with the topic name instead of the type name.

5.2

Report ID. Description
6488
dds1513
OpenSplice can be configured to allow a single application to operate in multiple domains
6457
dds1542
Generation of additional inappropriate files from idlpp
If A.idl depends on B.idl, and A.idl defines a "pragma keylist", then we need to apply idlpp on B.idl too so that BSplDcps.h is generated. However idlpp will also generate BDcps.idl which only contains namespaces and no struct.

Solution: idlpp amended to generate only the appropriate files.
dds1619 DDS shall provide a way to dispose all the instances of a topic in one call and to notify the receivers in one notification
See new features in 5.2 above.
dds1929 Dynamic namespaces for durability

Solution: OpenSplice DDS now supports more dynamic environments by introducing dynamic namespaces. With a dynamic namespaces, the durability service can determine at runtime if a previously unknown namespace discovered from another node needs to be maintained and\or aligned locally. For more information see the related documentation.
dds1958 Warning when opensplice is close to exceeding its amount of configured shared memory

Solution: OpenSplice DDS will now print a warning to the ospl-info.log file if the available, non fragmented shared memory is below 10% of the total available shared memory size. This warning will only be printed once.
dds2099 Process not terminating if several listeners attached to serveral entities
Using a domain participant in combination with a listener caused a deadlock situation to occur within OpenSplice DDS in situations where the listener was processing events while the DomainParticipant was already being deleted. The deletion operation would claim a mutex and perform various clean functions including stopping the listener thread and then waiting for it to terminate. Meanwhile the listener thread could be processing some events and require the mutex lock in use by the participant delete function.

Solution: Fix the delete function of the participant to release the mutex while waiting for the listener thread to exit and reclaim it once the exit function returned.
7122
dds2131
Unclear error reports when osplconf updates the configuration
Configuration not parsed properly.

Solution: Fixed an error in an XPath expression that is used internally to parse part of the configuration and improved the warning messages that appear in the info-log file.
dds2145 Developers needed to add dcpssacs.dll to the PATH to use C#

Solution: For C#, there is now a signed and versioned Assembly called dcpssacsAssembly.dll, created from the the dcpssacs.dll module, which is added to the Global Assembly cache. In this release, as part of the installation, this is added to the Global Assembly cache.
dds2154 SPLICE_ORB environment variable not set
In order to build the CORBA C++ example you require the SPLICE_ORB to be set. This is not done in release.com for Unix systems.

Solution: Added the variable to release.com.
7131/ dds2157 OpenSplice release.com loads jar files at the end of CLASSPATH

Solution: script fixed.
7157/ dds2158 Incorrect parameter passing in report plugin.
Parameter passing in the Report Plugin intialise function was incorrect.

Solution: Small code error fixed.
7156/ dds2159 Missing report configuration in osplconf.
osplconf tool was not up to date with the deployment guide and did not allow some of the configuration items to be set.

Solution: Updated the configuration to match the deployment guide.
7158/ dds2160 spliced crashes when adding a report plugin

Solution: Small code error fixed.
dds2163 When using the pragma 'cats' in combination with multiple listed fields, the IDLP Pre-processor would crash and not generate any code
There was a bug within the IDL Pre-Processor idlpp which occured when the 'cats' pragma directive was being evaluated and incorrectly take 2 fields from a list. This caused a null pointer to be retrieved from the list in the next iteration, where a valid field was expected, and idl would crash when the pointer was dereferenced.

Solution: The double take from the list has been removed.
dds2167 Example C#Visual Studio Solution and Project files should be valid for both VS2005 and VS2008
In 5.1, the C# example projects would only support Visual Studio 2008

Solution: Projects are now created with Visual Studio 2008.
dds2173 Coherent updates
See new features in 5.2 above.
dds2188 Builtin topic default QoS incorrect in relation to reliability.max_blocking_time
The specification specifies that the max_blocking_time of the reliability QoS should be 100ms. Currently it isset to 0ms.

Solution: Updated code to set QoS to 100ms.
7190/
dds2192
Instances are unregistered on the DataWriter when its liveliness expires
All instances are unregistered on the DataWriter when its liveliness expires, but this is wrong behaviour. It causes write calls with an instance-handle to return PRECONDITION_NOT_MET after liveliness expires.

Solution: A DataWriter no longer unregisters its instances when its liveliness expires. A DataReader does reset the ownership of an instance when liveliness of DataWriter expires in case of exclusive ownership.
7186/
dds2204
Communication between different subnetworks not supported
To be able to communicate between different subnetworks the DontRoute networking service configuration option needs to be set to false for all channels including discovery. Even though the networking service supports this configuration, the configurator tool did not offer this option for discovery. The same goes for other send/receive options that are available for channels.

Solution: The configurator has been extended to support all send/receive options for networking discovery as for the channels.

5.1.1

Report ID. Description
dds2078 Disabled factories default QoS settings not returned.
Default Qos settings for factories are not returned if the factory is in a disabled state. If the caller did not initialize the Qos parameter (assuming get_default_qos would do that), then an uninitialized QoS would be returned.

Solution: Removed the check for disabled factories, so that they are handled like enabled factories.
7104
dds2108
make_hde will not copy host libs for linux cross compile
If the host and target operating systems are the same, in this case Linux, but the target architectures are different the make_hde will not copy the host lib's.

Solution: Changed the check in the make_hde script.
dds2133 PATH environment variable corrupted by checkconf script on Windows build when using Visual Studio 2008
The ospli/bin/checkconf script, which is included by configure, is responsible for checking build requirements and prepares the environment for building OpenSplice. The part of the script that checks the Microsoft toolchain contains an error when Visual Studio 2008 is detected. It uses 'cygpath -d' (line: 186) to translate a path but this returns the windows representation of the path (including c:\). The result is then appended to the Unix PATH environment variable, which uses ':' as a field seperator. This corrupts the PATH variable which causes the build to fail.

Solution: Script amended to handle windows paths correctly.
dds2165 Set default QoS behaviour not compliant with the OMG specification.
The factory operations set_default_xxx_qos() (where xxx represents an entity type, i.e. topic, publisher, subscriber, datawriter and datareader) do not work according to the DDS spec when their corresponding XXX_QOS_DEFAULT label is passed as parameter. According to the DDS specification, the set_default_xxx_qos operation should in that case: "The special value XXX_QOS_DEFAULT may be passed to this operation to indicate that the default QoS should be reset back to the initial values the factory would use, that is the values that would be used if the set_default_xxx_qos operation had never been called."

In OpenSplice DDS these operations either do nothing and return RETCODE_OK (e.g. set_default_publisher_qos), or return a RETCODE_BAD_PARAMETER (e.g. set_default_subscriber_qos).

Solution: Updated the functionality to behave as per the specification.
dds2177 PartitionID changed to be byte swapped before being sent out over the network

5.1.0p1

Report ID. Description
7053
dds2046
When an application attach listeners, then it does not terminate and just hangs after the main thread finished.
Java 'hangs' on exit when not all DDS entities have been deleted.

Solution: A shutdown hook is now installed on the JVM. The shutdown hook is installed during the first successful call on the DomainParticipantFactory.get_instance() operation. This shutdown hook will ensure all contained entities of the DomainParticipantFactory are deleted before the final shutdown of the JVM commences. Before this fix the contained entities where deleted during/after the final shutdown of the JVM which caused various JVM resources to be accessed by OpenSplice while they were no longer available.
7141
dds2143
Code generation with OSPL IDL pre-processor fails for specific key types
The IDL pre-processor rejects usage of character arrays as key fields in IDL. This occurs even though the character array has been marked to be interpreted as a string internally by the middleware via a '#pragma cats' definition. The IDL pre-processor fails to recognize the '#pragma cats' definition during key field validation if it is located in a different module and/or in an included IDL file. Furthermore the IDL pre-processor incorrectly validates character arrays when they are used in combination with typedefs.

Solution: The IDL pre-processor now is able to recognize the '#pragma cats' definition regardless of it's location and will also correctly resolve any used typedefs in determining whether or not a key field is a character array.
7140
dds2144
TIMEOUT when writing a topic with synchronous reliability activated
When activating the synchronous reliability on DataReaders and DataWriters, the write returns an error code 10 (TIMEOUT) even with large timeout (5 secs).

Solution: A fix has been implemented to prevent synchronous writers from blocking on ACKs from non-matching readers (i.e. subscribed on other topics). This was because when the writer was created, *all* synchronous readers were injected into its administration. But as the non-matching readers never received messages from this writer, they would never acknowledge and the writer would wait infinitely (until timeout).

5.1.0

Report ID. Description
4838
dds505
Shared DataReaders needed for efficiency
Applications need facilities that allow them to share one DataReader over multiple processes on the same node. This allows reducing the memory footprint on a node significantly in case a lot of applications are interested in the same data

Solution:A new 'share' QoS policy has been introduced in the SubscriberQos and DataReaderQos that allow applications to share these entities.
dds1011 Not all .bat files in the 'bin' directory of the release use Windows line endings
Some .bat files in the 'bin' directory of the Windows release use UNIX-style line endings.

Solution:Changed the line-endings of the .bat files to Windows-style line-endings.
6569
dds1541
OSPL does not generate default entry of switch of unions in C++
According to the IDL to C++ mapping, the IDL pre-processor should generate a default entry for in case no all the possible values of the switch are defined as cases and no default case is modelled in IDL. Because this is not done, compiling the generated code will show warnings.

Solution:A default entry is now generated by the IDL pre-processor to make sure compiling the generated code does not show any warnings.
6556
dds1551
User application conflict with cfg_parse operation

OpenSplice has a 'cfg_parse' function that is also used a lot in other products. This leads to a name collision when OpenSplice is used in combination with these other products.

Solution:The 'cfg_parse' function has been renamed to 'cfg_parse_ospl' to prevent collisions.
dds1552 Support for abstract domain identification in create_domain_participant
OpenSplice V4 and before only support URI as domain ID

Solution:A DomainId consists of a string that represents either a URI to the location of the configuration file (e.g. file:///projects/DDS/ospl.xml) or the Domain name as specified in the configuration file. The actual value returned is dependent of the value used when creating the DomainParticipant, also see the DomainParticipantFactory create_participant operation. If a DomainParticipant is created using the Domain name then it will also return the Domain name and visa-versa when created using a URI then the URI will be returned by this operation. The configuration file, identified by the URI, specifies all configuration details of the Domain.
dds1677 os_threadCreate failed because of wrong stack size

If on the system the PTHREAD_STACK_MIN is smaller than OS_STACKSIZE_DEFAULT the call to pthread_attr_setstacksize in os_threadCreate (POSIX) will fail.

Solution:PTHREAD_STACK_MIN is now used instead.
6815
dds1829
Persistent data can get lost

Due to the durability alignment strategy, persistent data can get 'lost'. The durability when not master for a name-space sets aside the locally stored persistent data set. Then it aligns with the master. When during this process, the host is reset (actively or power-fail), the persistent data-set may not be complete.

Solution:The durability service now stores information about having a complete set or not on disk. If it detects on re-start that the set is not complete, the 'old' set is restored and injected instead to at least have a complete set of data.
dds1836 On VxWorks - ospl reports warning sched_getscheduler failed with error 3 in cmsoap service
This occurs because the sched_getscheduler requires a task id in vxworks6.

Solution:Properly handle the case when os_procAttrGetClass is called by adding a vxworks6.x specific version of os_procAttrGetClass that passes the current task id rather than process id to sched_getscheduler
dds1844 Addition of networking statistics
A large number of statistics for the networking service have been added and these are now available in the OpenSplice Tuner. By default, statistics are switched off. The enable them, the following needs to be added to the configuration file under //OpenSplice/Domain:
<Statistics>
  <Category name="networking" enabled="true"/>
</Statistics>
dds1847 Support multiple installations of OpenSplice DDS on Windows platforms
OpenSplice DDS uses system variables and thus installing a new version of OpenSplice will overwrite the variables for the previous installation.

Solution:OpenSplice does not use system variables anymore. A release.bat script is available in the installation directory to configure your environment.
6792
dds1865
The IDL pre-processor must report unsupported key types
The IDL pre-processor does not report illegal key fields in a type when the attributes are there, but the type of the attributes is not supported as a key field. Besides that, it also still generated code, causing problems with this code only at run-time.

Solution:The IDL pre-processor now reports unsupported key fields and does not generate any code in that situation.
dds1894 durability: Two nodes select each other as master, blocking alignment
Due to an error in the algorithm that determines the master-ship of a durability service, multiple masters can appear, causing the alignment of non-volatile data to fail.

Solution:The error in determination of the master has been repaired.
dds1899 Asymmetric NetworkPartition configuration
Right now networkPartitions are characterized by an ID that's determined by the order in which they're defined in the config-file. This does NOT allow for asymmetric configuration.
Solution:A name-hash is calculated to create an ID that allows asymmetric configuration of networkPartitions over nodes.
6861
dds1903
Network partition expression more limited than described and needed

The network partition.topic expression is more limited than described in the deployment manual regarding the usage of wild-cards ('*').

Solution:Wild-cards are now supported on all levels for network-partitions.
dds1914 Improve reporting of non-matching topics
Currently when an application creates a topic that already exists in the system it will be compared against the existing one and the creation will fail if the definition is not equal. The error reports that are generated are not useful as they often do not report the topic name. It would be very helpful if users know which topic creation fails and what the cause is, preferable also report conflicting values.

Solution:The type name of the topic is now reported when the user tries to create a topic with the same name but a different type.
6879
dds1921
Illegal object reported followed by segmentation faults

Applications sometimes report detecting an illegal object after which they crash. This is caused by an inconsistency in the kernel instance administration.

Solution:The error in the internal administration of instances in the kernel has been corrected.
dds1926 Setting parameters of a query is too expensive

Setting a parameter on a simple query (using only '=' i.c.w. AND) is too expensive and results in congestion on the memory manager.

Solution:Instead of fully reconstructing a query, only the parameters are now changed for simple queries.
dds1932 State the paths of the ospl-info and ospl-error files immediately after running ospl start
6904
dds1938
Set query parameters should reset the query cache

Setting the query parameters should reset the query cache because the query when executed over the reader database might pass samples with the new arguments. This causes the reader not to trigger the application when new data arrives and also can lead to the situation in which an application cannot read any data from the reader, even though there is data.

Solution:The cache is now re-evaluated when a query is modified and also when historical data is delivered.
dds1946 Corrupted caching instance pipeline

The instance pipeline in the kernel is formed by caching destination instances at source instances. The design supports disconnecting sources but disconnecting destination instances is poorly implemented. This may lead to corrupted instance caches and in some cases temporary memory leakage.

Solution:The pipeline implementation has been modified to allow disconnecting destination instances also.
dds1947 Default JDK is now Java 6
OpenSplice DDS V5 is compiled with JDK6, but is compatible with JDK5 as we use the -source 1.5 flag
dds1965 Persistent data-store completeness needs to be communicated to late-joining nodes
When nodes are aligned simultaneously, it is possible for them to detect whether they did receive a consistent (complete) persistent data-set or not. In this scenario, these nodes can take action to prevent injection of incomplete persistent data the next time the node starts. However, for late joining nodes there is no way to detect if a currently available persistent set is complete/consistent. Therefore, if a system would be restarted, and a previous late joining node from a system where incomplete persistent data was injected would become master for this set, injection of incomplete data would happen.

Solution:Late joining nodes get information about persistent data completeness of other nodes.
dds1986 Problem with persistent topic having exclusive ownership strength

Because exclusive persistent/transient samples were not stored correctly, writers that no longer existed (for example from a persistent store) could in some cases prevent new writers from writing new data.

Solution:Instances from a persistent store are now always implicitly unregistered. Modifications have been made to prevent storing persistent register/unregister messages, since these are now both implicit. Furthermore, the durability service will maintain data according to the OwnershipQosPolicy that is set in the TopicQos.

6989
dds1988
Linux 64 bit crashes when using a shared memory address above the 4GB range
When using a shared memory address which is not aligned on 8192 bytes, OpenSplice DDS would crash.

Solution:Added functionality to print a warning in the info log when the configured shared memory address is not aligned on 8192 bytes on 64-bit platforms. DDS will also automatically select the next correctly aligned address and use that instead.
dds1998 Problem with unions in durability in debug mode
Due to an invalid assertion, the durability service crashed in debug mode when using specific constructions within a union.

Solution:The invalid assertion has been removed.
dds1999 Problem with durability when publishing a union with switch set to a value without corresponding case
Due to an invalid assumption in the serialization routines, the durability service is not able to handle unions correctly when the switch is set to a value without a corresponding case.

Solution:The serialization routines have been updated to handle these unions correctly.
dds2007 Durability crashes when tracing is enabled and needs to print '%' character

The durability service crashes while tracing information when there's a % in the path, because 'fprintf' takes it as format.

Solution:The information to print using 'fprintf' is done using a format with the string as argument instead of directly printing the string.
dds2013 idlpp doesn't allow typedef of interface
Even though no code is generated for (typedefs of) interfaces by the IDL pre-processor, it should still allow these constructions to be modelled in IDL.

Solution:The IDL pre-processor has been modified to ignore typedefs of interfaces as well.
7012
dds2015
idlpp truncates case label in case of enumeration for java

If the enumeration label inclusive it's scope is larger than 100 characters, the label truncated to 99 characters.

Solution:The length of an enum label is now dynamically determined.
dds2022 cppgen for Windows can not handle multiple #includes unless separated by more than a new-line
In cpp (C Pre Processor) this occurs when you do not have a carriage return at the end of an included idl files and there is another idl file included after it.

Solution:The cpp has been modified to handle this situation correctly.
6974/7023
dds2025/dds2089
CTRL+C in Java has no effect, JVM must be shutdown using KILL -9
Solution:The exit handling in DDS has been tightened by installing a shutdown hook to ensure that all the DDS entities are cleaned up and therefore processes can terminate.
6861
dds2029
u_queryNew accesses unset variable copy

In the function u_queryNew the variable copy is accessed and used to dispose (q_dispose) while it's value has not been set.

Solution:The variable is no longer disposed when it has not been set.
dds2043 Allow bigger value of InitialDiscoveryPeriod

The InitialDiscoveryPeriod max value allowed is 10s. More is required by customers.

Solution:The maximum value for InitialDiscoveryPeriod is now set to 60 seconds

dds2045 PolySpace issues

Static code analysis with PolySpace demonstrates some (potential) problems in the code-base.

Solution:The detected problems in the code have been repaired.
7062
dds2072
Deadlock in Opensplice callstack when calling write() and take() at the same time
Due to an error in the internal locking strategy in the OpenSplice kernel, an application can get into a deadlock when three threads are concurrently operating on the same set of objects.

Solution:The error in the internal locking strategy has been repaired.

Fixed Bugs and Changes affecting API

5.3.0

Report ID. Description
dds845 DestinationOrderQosPolicy value is not listed in the language specific DCPSPublication topic
The DDS 1.1 specification mistakenly forgot to mention the DestinationOrderQosPolicy in the DCPSPublication builtin topic, which should have been there since the policy is marked as being RxO. This omission was repaired in the DDS 1.2 specification.

Although the DestinationOrderQospolicy is actually transmitted in the DCPSPublication builtin topic, it still misses in the language specific representation for C, C++ and Java.

Solution: Added the C, C++ and Java representations for DestinationOrderQospolicy.
dds2220 The get_key_value() method implementation on the dataReader is missing
The DataReader misses the specified get_key_value() method.

Solution: Implemented the missing get_key_value() method on the dataReader.

5.1.0

Report ID. Description
GEN_7
dds1577
Report Plug-In facility
See the release highlights section
DDS_4
dds1578
Network level compression
See the release highlights section
DDS_29
dds1617
Create a persistent snapshot
The durability service allows an application to request a snapshot of the values of instances of a topic. A snapshot consists of a copy of the current persistent data in a new file, the name of which is provided by the application.
dds1837 The C++ API does not support all Quality of Service
The C++ API (sacpp & ccpp) did not support the following QoS;
  • subscriber.share
  • datareader.share
  • datareader.reader_lifespan
  • datareader.subscription_keys
  • datareader.reader_data_lifecycle
  • DataReaderViewQos
  • viewKeyQosPolicy

Solution:QoS-ses are now implemented
Bugzilla#32 IDL array of arrays generates code that dosn't compile with standalone C++ mapping
idlpp / cppgen bug fixed such that the following IDL now generates compilable code: typedef unsigned short Matrix[1024][1024];



PrismTech TOP
Top