Best Practice and Possible Errors

Getting Started with OpenSplice

Getting Started Guide If you are new to OpenSplice DDS then the OpenSplice DDS Getting Started Guide (v6 pdf | html) (v7 pdf | html) is a good place to start. The Getting Started Guide provides: OpenSplice Launcher The OpenSplice launcher is a tool that will allow you to configure OpenSplice and run the examples […]

Can you tell the difference between historical samples and new samples?

After calling wait_for_historical_data writers may still be producing new data during that the time in takes to complete. Can you tell the difference between historical samples and new samples (where the latter might be defined as “written since I called wait_for_historical_data”)? Answer There is no such ‘break’ between the samples received so you may have […]

Transient Durability for Single Process

Federated Deployment TRANSIENT durability is typically exploited when using ‘federated-deployment’ where federations have a configured durability-service that maintains non-volatile data for late-joiners even when no applications are running. Single Process In case you’re using standalone-deployment (aka ‘single-process) you can still use TRANSIENT data but that then relies on applications being active that have configured a […]

OpenSplice Visual Studio Pre-Processer

OpenSplice for Windows is built with this specific Pre-Processor Definition which must also be used for the application during the OpenSplice build process _WIN32_WINNT=0x0502 OpenSplice may have memory corruption if the application is compiled with a different _WIN32_WINNT value than OpenSplice. If the definition is set after everything from OpenSplice is included then a newer value […]

Creating and deleting a writer quickly causes sample loss

If you are creating and deleting a writer quickly it may cause sample loss. This explanation shows why creating and deleting a writer in short period of time may cause a loss of samples.   What happens when an application creates an entity When an application creates an entity, e.g. a DataWriter, it publishes samples […]

Communication stops after 10 seconds

Description of the issue When running any combination of OpenSplice DDS applications using DDSI protocol on UDP multicast, communication sets up as expected at applications startup, but stops 10 seconds after startup. The origin of the issue : Bad multicast support These  kinds of problems are most often due to multicast communications issues. Multicast packets […]

Memory Claim Denied Error

Memory claim denied errors may appear in the OpenSplice log file. This is a symptom of running out of shared memory. These are the steps to follow to troubleshoot this problem. Memory Claim Denied Error in ospl.error log OpenSplice DDS can runs in two modes, federated or shared memory mode and single process memory mode.  […]

Error: libssl.so.10 was missing in Ubuntu 14.

error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory This error occurs when enabling DDS2ie as a transport for it’s encryption. This is a common problem with the default SSL libraries in Ubuntu and is unrelated to OpenSplice.  Luckily, it is an easy patch to make. First, SSL […]

How is the Global Data Space actually implemented in the network?

The information that is kept in the ‘Global Data Space’ can be divided into application-data (the samples of topics that are published/subscribed by applications) and meta-data (the standardized so-called ‘built-in topics‘ that describe which DDS-entities are active in the system i.e. the set of active participants, publishers, subscribers, readers and writers). Where information gets stored […]

Handling ‘invalid data’

A feature was introduced in the OMG DDS rev1.2  specification revision which is about the assurance to receive state-changes (e.g. when data gets disposed and/or unregistered) even in absence of actual data updates. It is related to the read/take semantics where a ‘take’ basically removes the data from a reader-cache. In the previous spec-revision,  in […]

Receiving warning level due to number of samples

If you receive the following warning message in the ospl-info.log file: Description : The number of samples ‘5000’ has surpassed the warning level of ‘5000’ samples. its just a warning.  Many times people don’t cleanup ‘their mess’ resulting in ever growing caches .. so we’d thought to give people a ‘hint’ that there might be […]

Large amount of data transmission problem

Problem I’m using OpenSplice to transmit huge packages (about 150Kb per package), and the receiver never receives them.  Debugging, it turns out that packages don’t seem to be sent out by the system. Solution Many times, people find the difference between ‘history’ and ‘reliability’ somewhat confusing so maybe that’s the case here too. When published […]

Out of memory: unable to create message for Topic

I am trying to run OpenSplice DDS with the shared memory configuration and am creating a large topic. When I do this I am getting an error “Out of memory: unable to create message for Topic”. What could be causing this? Out of memory: unable to create message for Topic You are trying to create […]

How can I get a notification when my DataReader receives a ‘dispose’ sample?

Scenario I am trying to read samples (new, updated or disposed) using the interface on_data_available. The publisher is writing dispose and after that unregistering the instance. The subscriber is reading new or updated samples of an instance by read-method. How can I get a notification when my DataReader receives a ‘dispose’ sample? Solution When a […]

How does shared memory usage increase with subscribers/publishers?

When a new subscriber or publisher application process is added to the node there is inevitably going to be an increase in shared memory usage as each DDS entity that is created must be added to the shared DDS administration. Therefore increasing the amount of subscribers or publishers will increase memory usage. When using shared […]