uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jaroslaw Cwiklik <uim...@gmail.com>
Subject Re: UIMA-AS: sendAndRecieveCAS hangs with no response
Date Fri, 29 Mar 2013 16:39:50 GMT
When using a single-threaded client which uses synchronous API
(sendAndReceive call) you need
just 1 CAS in the cas pool. The call blocks waiting for a reply. Once the
method returns the client
must either call CAS.reset() or CAS.release().

Is it possible that your client may be running code like this:

while( <some condition>) {
   CAS cas = client.getCAS()
   sendAndReceive(cas);
   <do something>
   cas.reset();
}

If yes, than that would explain the hang. The hang would happen because the
CAS is never returned
to the pool and subsequent getCAS() call just hangs. The CAS.reset() just
resets the CAS and doesnt
return it to the pool. The fix for this would be this:

CAS cas = client.getCAS();

while( <some condition>) {
   sendAndReceive(cas);
   <do something>
   cas.reset();
}

- JC

On Thu, Mar 28, 2013 at 8:19 AM, Spico Florin <spicoflorin@gmail.com> wrote:

> Hello!
>   I'm using UIMA 2.3.1 and I have a similar problem(client hang out) when:
> 1. Using the CAS pool to get/create the new CASes using
> UimaAsynchronousEngine.getCas()
> 2. using UimaAsynchronousEngine.sendAndReceiveCAS
> 3. The pipeline is having an AAE and two Remote AEs connected to it
> 4. Pipeline is running correctly
> By looking
>
> It seems to me that the engine is hanging waiting to create in new CAS, as
> in the code:
>  cas = engine.getCAS();
>
>
> Looking with the jconsole, I can  see the following:
>
> State: WAITING on java.util.concurrent.Semaphore$NonfairSync@5e9de959
> Total blocked: 3  Total waited: 5
>
> Stack trace:
> sun.misc.Unsafe.park(Native Method)
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
>
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
>
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:941)
>
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1261)
> java.util.concurrent.Semaphore.acquireUninterruptibly(Semaphore.java:309)
> *
>
> org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl$CasQueueEntry.getCas(BaseUIMAAsynchronousEngineCommon_impl.java:656)
> *
> The bolded text seems to be the reason of the hanging.
>
> Can you please look over it? Also, can you please explain better than the
> existing documentation, what is the mechanism behind the CAS pool used by
> the client BaseUIMAAsynchronousEngineCommon in the following terms:
>
> 1. what should be the pool size depending on the hw?
> 2. how CAS lifecycle is managed by the pool? Maning creting a new one,
> releasing, getting from the pool.
>
> I look forward for you answers.
>
> Regards,
>   Florin
>
>
> *
> *Thank yoiu
>
> On Mon, Mar 25, 2013 at 3:55 PM, Jaroslaw Cwiklik <uimaee@gmail.com>
> wrote:
>
> > Hi, do you have a deeply nested CMs in your pipeline? Is the top level
> > UIMA-AS service (the one the client is sending CASes to)  a CM?
> >
> > What you can do to debug this is to use jConsole attached to the UIMA-AS
> > process once you observe a hang. Click on Threads tab
> > and check each thread to determine where it is stuck. Some threads will
> be
> > blocking waiting on queues and thats ok. Check if CM thread
> > is blocking on getCas() which would mean that CASes are not being
> released.
> > Also, check the queue ( via jConsole attached to Broker process).
> > Does it look like the CASes are stuck in the queue?
> >
> > -jc
> >
> > On Sat, Mar 23, 2013 at 11:29 AM, Aiman <an2434@columbia.edu> wrote:
> >
> > > Hi all -
> > >
> > > After some debugging, it turned out that this is caused by the Cas
> > > Multipliers that I have in my pipleline. When I remove them from the
> > > pipeline it performs very well. I was wondering if there are any
> > > considerations that I have to make when using cas multipliers with
> > UIMA-AS
> > > ? Are there any settings that I have to change to the descriptor?
> > >
> > > Thanks
> > >
> > >
> > > On 2013-03-23 15:01:42 +0000, Aiman said:
> > >
> > >  Hello all -
> > >>
> > >> I have been able to successfully deploy my pipeline using UIMA-AS, I
> > >> tested it through command line tools and received the output CAS. I
> was
> > >> then able to programmatically call the service using Client API both
> > >> asynchronous and synchronously. However, for some reason, after few
> > runs it
> > >> stopped working.
> > >>
> > >> Now whenever I call sendAndReceiveCAS it just blocks without receiving
> > >> any response, viewing uima.log did not help as I only found some INFO
> > >> messages without any errors. sendCAS is more of a hit and miss, it
> works
> > >> sometimes and sometimes it does not. I do not understand what causing
> > this
> > >> and I don't know how to troubleshoot it. I've tried to purge activemq
> > >> queue, restart it, restart the AS service, changed the queue name. But
> > none
> > >> of that helped. When I try to terminate the service (using s+Enter),
> it
> > >> also hangs after showing a few lines of ".......
> > AnalysisEngineInstancePool.
> > >> **destroy() was called".
> > >>
> > >> I know it's getting stuck somewhere, but my pipeline is very
> lightweight
> > >> and it takes a few milliseconds directly without UIMA-AS. I would
> > >> apperciate any help in troubleshooting this.
> > >>
> > >> Thanks!
> > >>
> > >
> > >
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message