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

Reply via email to