I'm trying to use UIMA-AS to scale a part of the process of our application.
I have successfully deployed our process as asynchronous services but I
have tremendous issues with the client.
I'm basically looping synchronously(one at a time) on the following code.
CAS cas = uimaEEEngine.getCAS();
JCas jcas;
try {
jcas = cas.getJCas();
} catch (CASException e) {
throw new ResourceProcessException(e);
}
fillCas(jcas);
uimaEEEngine.sendCAS(cas);
When I run the application, the client works fine for a while and
suddenly gets stuck waiting on cas.getJCas()..
I have checked that the asynchronous service have processed all the
previous CAS. The service is still up and running as I can send
requests from an another client.
When I tracked down who locks the process, I can see that the semaphore
on CasQueueEntry is not released.
When I looked further, I noticed that the all process is basically lock
when the CasManager_Impl is calling CasPool.getCas(0) . The CasPool is
then waiting with no timeout for someone to notify it.
I try to change the size of the client CasPool but it didn't really fix
the issue. Just pushing further the lock...
Does anyone have ever experienced this? Am I doing something wrong ?
Pierre
|