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.
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?
- In the case that you have not modified that value, could you please update it to "0" for using only the heap dynamically?
Let me know if it is working for you.
Best,
Antonio