posted on Wednesday, January 14, 2009 - 12:48 pm
Hi, Sorry,I posted this query in another thread. I want to ask-suppose we have huge data,and we set QOS policies for all the entities as 'transient'.How long DDS would we able to keep this data in memory?What happens if memory becomes full?How DDS handles this situation?Will then there be no further storing of the data ?
Different DDS products will handle this situation in different ways, depending on whether the transient data is stored in the DataWriter from which it originates, or whether it is stored in some external durability service.
In case the data is stored in the context of the originating DataWriter (TRANSIENT_LOCAL durability), then the Qos-Settings of the DataWriter (HistoryQosPolicy and ResourceLimitsQosPolicy) determine how much space is reserved for the samples. If more room is needed than available, either old samples will be discarded at the cost of new samples (in case of a KEEP_LAST history policy), or the writer will be blocked until more room is available (in case of KEEP_ALL policy).
In case the data is stored in some external durability service (TRANSIENT durability), then the configuration settings of this service (which are product specific) determine how the service will handle overload situations.
In case of OpenSplice DDS, you can configure the durability services separately for each node. That way, if the total amount of transient data is too big to fit onto any single node, you can partition the transient data space into several (potentially overlapping) segments, each segment being stored on a different node. Partitioning can be configured by name, on the basis of the partitions specified in the PartitionQos. Each instance of the Durability Service can store all transient information encountered in 1 or more of the available partitions.
This way you can specify that all transient information in partition A is stored on node 1, and all transient information from partition B and C is stored on node 2 for example. You are also allowed to use wildcards, so that all transient information is stored by selecting the partition named '*'.