2017-01-29 15:41 GMT+01:00 cocorossello <[email protected]>: > Hi, > > I see the problem. > > I don't really understand why max is 100 > > a pool will increase the number of threads once the queue is full so you will get 101 threads when you will have (100 running tasks + 150000 waiting ones + 1) which is a number you dont hit in your test
> On Sun, Jan 29, 2017 at 3:27 PM, Romain Manni-Bucau [via TomEE & OpenEJB] < > [email protected]> wrote: > > > I think you just ensured to lock yourself - but agree it is well hidden > > ;). > > > > You have one layer waiting for N sub async tasks to be done but next > layer > > submits a lot of task and first layer keeps continuing so you just block > > yourself since at some point second layer is blocked by first layer which > > filled the pool. Not it is not a deadlock by itself but just a code logic > > lock if that phrasing means anything. > > > > Note that configuring a queue that big will always queue instead of > > increasing the pool size which will always be 100 and never 700 > (reference > > to your config). Not an issue but means Max=100 concretely. It means that > > if com.tr2.test.MyStateless#sayHello submits 99 tasks instead of 200 the > > blocking will likely not happen that easily if you followed me. > > > > Said otherwise: it is not linked to tomee but the code design (nesting > > thread pool tasks between them for a *same* executor is very dangerous. > > > > Here a simpler example: you have an executor of core=1, queue=1, first > > task > > submits 1 other tasks. You submitted therefore 2 tasks which passes cause > > it fills our core and queue but doesn't overpass it. However the second > > task submitted by the first one will never be executed and therefore the > > first task will keep waiting for it except if you have a timeout. In such > > a > > case the "facade"/first task will fail and let the child one be executed > > and release slowly the pool. > > > > Timeouts are key with thread pools. > > > > Side note, this works in the interceptor: > > > > @Resource(name = "TravelcAsynchronousPool") > > private ManagedExecutorService executor; > > > > > > > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > <https://blog-rmannibucau.rhcloud.com> | Old Blog > > <http://rmannibucau.wordpress.com> | Github <https://github.com/ > > rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > 2017-01-29 13:48 GMT+01:00 cocorossello <[hidden email] > > <http:///user/SendEmail.jtp?type=node&node=4680972&i=0>>: > > > > > Hi, > > > > > > I'm running into problems with this, I think it might be another > openejb > > > bug. > > > > > > If I have two levels of EJB @async threads get stuck at: > > > > > > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > > > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) > > > at java.util.concurrent.FutureTask.get(FutureTask.java:191) > > > at org.apache.openejb.threads.future.CUFuture.get(CUFuture. > java:55) > > > at > > > com.tr2.util.interceptor.async.FutureDelegator.get( > > > FutureDelegator.java:19) > > > > > > The setup is very simple > > > someStateless -> AsyncTask1 -> asyncTask2 > > > > > > I made an ApplicationComposer test (AsyncInterceptorIT) in that github > > > project (with latest SNAPSHOT) > > > > > > https://github.com/cocorossello/tomee-example > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > View this message in context: http://tomee-openejb.979440. > > > n4.nabble.com/MDC-and-Asynchronous-tp4680927p4680971.html > > > Sent from the TomEE Users mailing list archive at Nabble.com. > > > > > > > > > ------------------------------ > > If you reply to this email, your message will be added to the discussion > > below: > > http://tomee-openejb.979440.n4.nabble.com/MDC-and-Asynchronous- > > tp4680927p4680972.html > > To unsubscribe from MDC and @Asynchronous, click here > > <http://tomee-openejb.979440.n4.nabble.com/template/ > NamlServlet.jtp?macro=unsubscribe_by_code&node=4680927&code= > Y29jb3Jvc3NlbGxvQGdtYWlsLmNvbXw0NjgwOTI3fC05Mzc2MzQ4MzY=> > > . > > NAML > > <http://tomee-openejb.979440.n4.nabble.com/template/ > NamlServlet.jtp?macro=macro_viewer&id=instant_html% > 21nabble%3Aemail.naml&base=nabble.naml.namespaces. > BasicNamespace-nabble.view.web.template.NabbleNamespace- > nabble.view.web.template.NodeNamespace&breadcrumbs= > notify_subscribers%21nabble%3Aemail.naml-instant_emails% > 21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > > > > > > > -- > View this message in context: http://tomee-openejb.979440. > n4.nabble.com/MDC-and-Asynchronous-tp4680927p4680973.html > Sent from the TomEE Users mailing list archive at Nabble.com. >
