Hi,
we have an issue regarding the Request/Replier APIs send_reply function with versions 5.1.0 and 5.2.0.
The function replier->send_reply(*reply, identity); sporadically blocks the time specified in the qos profile max_blocking_time and throws an exception afterwards.
Most of the time this function doesn't block at all (0msec).
On the console connext outputs "EntityUntypedImpl::send_sample:!DataWriter write timeout".
This happens for ~15 seconds (sometimes longer) if the blocking time is 100msec or multiple minutes if the blocking time is 10sec.
How can we figure out why the function is blocking or debug what is going wrong?
This seems to never appear on application start, but after the application has sent thousands of requests/replies.
Best regards,
Bernd
Hi,
A Replier blocks under the same circumstances as a DataWriter: when it contains too many unacknowledged samples. By allowing more time to block (10s) the writer (Replier) seems to be able to catch up with the readers (Requesters).
The RTI Monitoring Library can be useful to display the status of the writer queues. You can also get that in your application:
replier.get_reply_datawriter()->get_datawriter_cache_status()
You may also find useful this article to increase the throughput of your replier: Which QoS parameters are important to tune for throughput testing? This other forum thread also discusses the blocking behavior of a DataWriter.
I hope this helps.
Regards,
Alex