Hi,
I use 'rtimer' and 'mqueue' to asynchronously defer certain heavy DB tasks on which call processing does not depend.
I was hoping to get a clarification on the exact behaviour of 'rtimer' when tasks don't complete as fast as they should.
Let's say that I set the rtimer route interval to half a second (500 ms), as afforded by new Kamailio 3.3.0 capabilities. What happens if the tasks I am running inside the rtimer route don't complete in that interval? Is that rtimer thread forceably terminated, or is it allowed to run as long as necessary to complete the task? Is there an absolute timeout? If the latter, I assume that another, parallel rtimer route will be started in the background after 500 ms. I am given to understand that there is a thread pool. How big is it? Can I configure its size anywhere? Is there a practical limit?
Finally, is there 100% assurance that 'mqueue' is safe to consume for multiple rtimer processes, possibly ones tripping over each other due to unpredictable delays? Or is it designed only to provide blocking mutex for data passed from a SIP worker thread to a different kind of thread?
Thanks!
-- Alex