gemmellr commented on pull request #44:
URL: https://github.com/apache/qpid-jms/pull/44#issuecomment-953007869


   So, one 'slight' problem with this hehe. It doesnt do at all what is 
described or I think both of us initially thought it would be doing. Digging 
into the executor behaviour, rather than it potentially being elastic up to n 
threads its instead binary where it has either 0 or 1 thread.
   
   It only looks to create new threads if there are none, or if it is under the 
max number when it cant insert into the task queue, which it always can and so 
it only creates a first thread and then always uses that after (ignoring idle 
timeout). Essentially the current impl serializes all completions for all 
sessions on the connection onto 1 thread, and would halt completions across all 
sessions if the thread were ever used to do any kind of longer lasting / 
blocking work during any given completion callback, which is entirely allowed 
and so that isnt acceptable.
   
   A search confirms this as expected executor behaviour. To have it behave 
otherwise you have to do stuff like play around with things like pretending the 
task queue queue is full, extending the rejected execution handler, or having 
it create core threads but allowing core threads to also timeout as well.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to