uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jaroslaw Cwiklik <uim...@gmail.com>
Subject Re: [jira] [Created] (UIMA-5036) UIMA-DUCC: fix Agent RejectedExecutionException
Date Tue, 02 Aug 2016 13:53:16 GMT
Its not a critical bug in my opinion. This happens sometimes when a service
is being stopped via kill -15. The error occurs in a metrics gathering part
of an agent. I only effects a process being shutdown, and does not cause
any side-effects except for logging.


On Mon, Aug 1, 2016 at 5:19 PM, Marshall Schor <msa@schor.com> wrote:

> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message