RTI persistence service saves more than one sample in KEEP_LAST 1 for none keyed topics

3 posts / 0 new
Last post
Offline
Last seen: 1 day 4 hours ago
Joined: 09/10/2022
Posts: 52
RTI persistence service saves more than one sample in KEEP_LAST 1 for none keyed topics

Hello. I use connext dds version 6.0.0. I run persistence service with this configurations:

 

<dds>
    <qos_library name="UserPersistenceQosLib">
        <qos_profile name="QosProfile">
    	  	<datawriter_qos name="WriterQos">
    		    <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>1</depth>
                </history>
    			<destination_order>
    				<kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
    			</destination_order>
                <property>
                    <value>
                        <element>
                            <name>dds.builtin_type.*.max_size</name>
                            <value>16777216</value>
                        </element>
                        <element>
                            <name>dds.builtin_type.*.alloc_size</name>
                            <value>16777216</value>
                        </element>
                        <element>
                            <name>dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size</name>
                            <value>3000000</value>
                        </element>
                    </value>
                </property>
                <protocol>
                    <rtps_reliable_writer>
                        <min_send_window_size>LENGTH_UNLIMITED</min_send_window_size>
                        <max_send_window_size>LENGTH_UNLIMITED</max_send_window_size>
                    </rtps_reliable_writer>
                </protocol>
                <publish_mode>
                    <kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
                </publish_mode>
                <writer_data_lifecycle>
                  <autopurge_disposed_instances_delay>
                    <sec>0</sec>
                    <nanosec>0</nanosec>
                  </autopurge_disposed_instances_delay>
                </writer_data_lifecycle>
            </datawriter_qos>
            <datareader_qos name="ReaderQos">
    			<destination_order>
    				<kind>BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS</kind>
    			</destination_order>
    		    <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
    		    <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>1</depth>
                </history>
                <property>
                    <value>
                        <element>
                            <name>dds.data_reader.history.memory_manager.fast_pool.pool_buffer_max_size</name>
                            <value>3000000</value>
                        </element>
                        <element>
                            <name>reader_resource_limits.dynamically_allocate_fragmented_samples</name>
                            <value>true</value>
                        </element>
                    </value>
                </property>
             </datareader_qos>
            <publisher_qos name="PublisherQos">
    		    <partition>
    		    	<name>
    		   	        <element>*</element>
    		    	</name>
    		    </partition>
    		</publisher_qos>
    		<subscriber_qos name="SubscriberQos">
    			<partition>
    				<name>
    					<element>*</element>
    				</name>
    			</partition>
    		</subscriber_qos>
        </qos_profile>
    </qos_library>

    <persistence_service name="SaveDisk">
        <annotation>
            <documentation>
                Persists in the file system all topics published with PERSISTENT durability.
            </documentation>
        </annotation>
        <persistent_storage>
            <filesystem>
                <directory>/Home</directory>
                <file_prefix>SavedFile_</file_prefix>
                <journal_mode>DELETE</journal_mode>
                <synchronization>FULL</synchronization>
                <vacuum>FULL</vacuum>
            </filesystem>
            <restore>true</restore>
            <type_object_max_serialized_length>20000</type_object_max_serialized_length>
        </persistent_storage>
        <participant name="defaultParticipant">
			<participant_qos>
		    	<resource_limits>
		    	    <type_code_max_serialized_length>0</type_code_max_serialized_length>
		    	    <type_object_max_serialized_length>20000</type_object_max_serialized_length>
                    <reader_user_data_max_length>65536</reader_user_data_max_length>
                    <writer_user_data_max_length>65536</writer_user_data_max_length>
		    	</resource_limits>
                <property>
                    <value>
                        <element>
                            <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
                            <value>16777216</value>
                        </element>
                        <element>
                            <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
                            <value>100000</value>
                        </element>
                         <element>
                            <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
                            <value>16777216</value>
                        </element>
                         <element>
                            <name>dds.transport.shmem.builtin.receive_buffer_size</name>
                            <value>2048576</value>
                        </element>
                    </value>
                </property>
			</participant_qos>
            <persistence_group name="persistAll">
                <filter>*</filter>
                <use_durability_service>false</use_durability_service>
                <single_publisher>true</single_publisher>
                <single_subscriber>true</single_subscriber>
                <datawriter_qos base_name="UserPersistenceQosLib::QosProfile"/>
                <datareader_qos base_name="UserPersistenceQosLib::QosProfile"/>
                <publisher_qos base_name="UserPersistenceQosLib::QosProfile"/>
                <subscriber_qos base_name="UserPersistenceQosLib::QosProfile"/>
                <!-- <topic_qos>    </topic_qos> -->
                <memory_management>
                    <persistent_sample_buffer_max_size>LENGTH_UNLIMITED</persistent_sample_buffer_max_size>
                    <pool_sample_buffer_max_size>LENGTH_UNLIMITED</pool_sample_buffer_max_size>
                </memory_management>
                <reader_checkpoint_frequency>1000</reader_checkpoint_frequency>
                <writer_checkpoint_period>1000</writer_checkpoint_period>
            </persistence_group>
        </participant>
    </persistence_service>

</dds> 

The problem is that for some topics that I set durability with pesistence service value, I receive two sample for topics that are none keyed.

First time that persistence service detects a topic, it just saves and sends one sample per none-keyed topic. After I restart persistence service I receive one sample until a new sample of the topic be published. Then I receive two sample for none-keyed topic until I restart persistence service again. Every time that I restart persistence service, I recieve one sample, but when new sample published, persistence service sends two sample...

Howard's picture
Offline
Last seen: 10 hours 13 min ago
Joined: 11/29/2012
Posts: 648

Questions like these are best directed to RTI's support group, support@rti.com.  I don't know if the behavior that you're seeing is expected or not.

Offline
Last seen: 1 day 4 hours ago
Joined: 09/10/2022
Posts: 52

Okay, thank you.