uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marshall Schor <...@schor.com>
Subject Re: [jira] [Created] (UIMA-5036) UIMA-DUCC: fix Agent RejectedExecutionException
Date Mon, 01 Aug 2016 21:19:31 GMT
just wondering if this issue is important enough to get into this release?  It
says "future-DUCC" so, I guess you're thinking it's not?

-Marshall

On 8/1/2016 1:17 PM, Jerry Cwiklik (JIRA) wrote:
> Jerry Cwiklik created UIMA-5036:
> -----------------------------------
>
>              Summary: UIMA-DUCC: fix Agent RejectedExecutionException
>                  Key: UIMA-5036
>                  URL: https://issues.apache.org/jira/browse/UIMA-5036
>              Project: UIMA
>           Issue Type: Bug
>           Components: DUCC
>             Reporter: Jerry Cwiklik
>             Assignee: Jerry Cwiklik
>              Fix For: future-DUCC
>
>
> Fix a race condition which leads to RejectedExecutionException in LinuxProcessMetricsProcessor.process()
method. The method fails with this stack trace:
>
> java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@4c38895
rejected from java.util.concurrent.ThreadPoolExecutor@41c10669[Terminated, pool \
> size = 0, active threads = 0, queued tasks = 0, completed tasks = 2052]
>         at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
>         at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
>         at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
>         at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
>         at org.apache.uima.ducc.agent.processors.LinuxProcessMetricsProcessor.process(LinuxProcessMetricsProcessor.java:291)
>         at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
>         at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
>         at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:165)
>         at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:73)
>         at java.util.TimerThread.mainLoop(Timer.java:555)
>         at java.util.TimerThread.run(Timer.java:505)
>
> In the above, the thread pool state shows as Terminated when a submit API was called.
This means that the thread pool was stopped when the code was trying to use the pool. 
>  
> Each process spawned by an Agent has a Camel driven timer which triggers metrics collection.
The metrics are collected in multiple threads provided by the thread pool. 
>
> The fix is to synchronize code in close() and process() on a common lock.  In stop()
the code sets a boolean indicating that the metrics collection should not take place. In the
process(), the code checks the boolean to determine if it should proceed. 
>
> The Camel driven timer is eventually stopped in a code handling process termination.

>
>
>
> --
> This message was sent by Atlassian JIRA
> (v6.3.4#6332)
>


Mime
View raw message