Some Errors in HelloWorldQS example

2 posts / 0 new
Last post
Offline
Last seen: 5 years 1 month ago
Joined: 05/17/2017
Posts: 4
Some Errors in HelloWorldQS example

Hi, I want to use HelloWorld example in RTI Queuing Service.

I wanted to make a DDS system with 1 publisher(producer), 1 subcriber(consumer), and 1 queuing service with SRQ(SharedReaderQueue).
So I used the example "rti_workspace/5.2.3/queuing_service/c++/hello_world" and execute the QS with HelloWorldQS config (in default QsHelloWorld.xml).

But when I execute the publisher("./objs/<arch>/HelloWorldQueue_publisher"), it shows following error messages.

REDAFastBufferPool_growEmptyPoolEA: !allocate buffer of 68719444224 bytes
REDAFastBufferPool_newWithNotification:!create fast buffer pool buffers
PRESTypePluginDefaultEndpointData_createWriterPool:!create writer buffer pool
WriterHistorySessionManager_new:!create newAllocator
WriterHistoryMemoryPlugin_createHistory:!create sessionManager
PRESWriterHistoryDriver_new:!create _whHnd
PRESPsService_enableLocalEndpointWithCursor:!create WriterHistoryDriver
PRESPsService_enableLocalEndpoint:!enable local endpoint
DDSDataWriter_impl::createI:ERROR: Failed to auto-enable entity
create_datawriter error

I thought that the unbounded sequence in IDL file occured the error, so I fixed it from sequence<octet> to sequence<octet,32>.
Then  I retried to execute the publisher, but that time, the publisher couldn't discovered the SharedReaderQueue.


It shows following message permanently.

"Waiting to discover SharedReaderQueue ..."

But the subscriber("./objs/<arch>/HelloWorldQueue_subscriber") discovered SRQ well.
(Waiting to discover SharedReaderQueue ...
SharedReaderQueue discovered...)

How can I do for running this example?

 

Environment
Intel i5 CPU with 4GB RAM, Ubuntu 14.04 x64
RTI Connext DDS 5.2.3 with RTI Queuing Service.
I executed all components(pub, sub and QS) in one host desktop.

Keywords:
ajimenez's picture
Offline
Last seen: 1 year 9 months ago
Joined: 09/29/2017
Posts: 21

Hi WonHyeong,

This issue is related to a memory management. The solution here is to be more flexible in the memory allocation schemas.

The property dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size determines how the memory is allocated, as it is said in the documentation:
- If the key’s serialized size is <= pool_buffer_max_size: pre-allocate memory.
- If the key’s serialized size is > pool_buffer_max_size: dynamically allocate from the heap.

Firstly, could you please provide us with the value that you are setting in the property pool_buffer_max_size?
- In the case that you have modified that value, could you please keep it as it was in the example?

<datawriter_qos>
    <property>
        <value>
            <element>
                <name>dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size</name>
                <value>4096</value>
            </element>
        </value>
    </property>
</datawriter_qos>

- In the case that you have not modified that value, could you please update it to "0" for using only the heap dynamically?

<datawriter_qos>
    <property>
        <value>
            <element>
                <name>dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size</name>
                <value>0</value>
            </element>
        </value>
    </property>
</datawriter_qos>

Let me know if it is working for you.

Best,
Antonio