As a followup, can you describe your uima-as deployment? Is it async
aggregate or primitive? If aggregate, what are the delegates and how each
is scaled?

Jerry C



On Thu, Jun 6, 2013 at 11:20 AM, Jaroslaw Cwiklik <uim...@gmail.com> wrote:

> I frequently run UIMA-AS with scaled up AEs in the same jvm with no
> problems. The UIMA-AS calls defineCasPool() once
> when all AEs are instantiated.
>
> The uima-core code that throws the exception is in
> CasManager_impl.defineCasPool()
>
>  private synchronized void defineCasPool(UimaContext aRequestorContext,
> String aRequestorContextName, int aMinimumSize,
>           Properties aPerformanceTuningSettings) throws
> ResourceInitializationException {
>  *   int poolSize = getCasPoolSize(aRequestorContextName, aMinimumSize);*
>     *if (poolSize > 0) {*
>       CasPool pool = (CasPool)
> mRequestorToCasPoolMap.get(aRequestorContextName);
>       if (pool == null) {
>         // this requestor hasn't requested a CAS before
>         pool = new CasPool(poolSize, this, aPerformanceTuningSettings);
>         populateCasToCasPoolAndUimaContextMaps(pool, aRequestorContext);
>         mRequestorToCasPoolMap.put(aRequestorContextName, pool);
>         //register with JMX
>         registerCasPoolMBean(aRequestorContextName, pool);
>
>       } else {
>       *  throw new
> UIMARuntimeException(UIMARuntimeException.DEFINE_CAS_POOL_CALLED_TWICE,*
> *                new Object[] { aRequestorContextName });*
>       }
>     }
>   }
>
> So it looks like something else is calling this method before UIMA-AS
> does. You may need to run UIMA-AS in a debugger
> to determine what is happening. Just set a break point in defineCasPool
> and back trace the call.
>
> Jerry C
>
>
> On Wed, Jun 5, 2013 at 9:27 PM, GATE User <gateu...@ymail.com> wrote:
>
>> Here's some additional information:
>>
>> I recent got the error after commenting out the part of the initialize
>> code that gets the external resource, so it might not be connected to that
>> after all.  I am also running this the broker and delegates in VirtualBox
>> VMs.  Thanks in advance.
>>
>>
>> ________________________________
>>  From: GATE User <gateu...@ymail.com>
>> To: "user@uima.apache.org" <user@uima.apache.org>
>> Sent: Wednesday, June 5, 2013 1:10 PM
>> Subject: Error when deploying 5 instances of AE with External Resource,
>> UIMA-AS 2.4.1 Snapshot
>>
>>
>> Hello all:
>>
>> I declared a external resource and deployed the analysis engine with 5
>> replicated instances on UIMA-AS 2.4.1 snapshot that I compiled from the svn
>> repo for uima-as (trunk).  Deployment seems to go fine at first, but then
>> about 10-20 seconds after the deployment says it's ready for work, the
>> threads start to die.  The following error message appears in the log file
>> 5 times.
>>
>>
>>
>> org.apache.uima.UIMARuntimeException: The method
>> CasManager.defineCasPool() was called twice by the same Analysis Engine
>> (PrimitiveAEService).
>>     at
>> org.apache.uima.resource.impl.CasManager_impl.defineCasPool(CasManager_impl.java:183)
>>     at
>> org.apache.uima.resource.impl.CasManager_impl.defineCasPool(CasManager_impl.java:153)
>>     at
>> org.apache.uima.aae.EECasManager_impl.defineCasPool(EECasManager_impl.java:56)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:97)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:81)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:77)
>>     at
>>
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.postInitialize(PrimitiveAnalysisEngineController_impl.java:303)
>>     at
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.initializeAnalysisEngine(PrimitiveAnalysisEngineController_impl.java:211)
>>     at
>> org.apache.uima.aae.UimaAsThreadFactory$1.run(UimaAsThreadFactory.java:114)
>>     at java.lang.Thread.run(Thread.java:722)
>>
>> 11:40:25.256 - 23:
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.postInitialize:
>> WARNING: Service:
>> /usr/local/share/applications/uima-as/pear/MgrsRegularExpressionAnnotator
>> Runtime Exception
>> 11:40:25.256 - 23:
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.postInitialize:
>> WARNING:
>> org.apache.uima.aae.error.AsynchAEException:
>> org.apache.uima.UIMARuntimeException: The method CasManager.defineCasPool()
>> was called twice by the same
>> Analysis Engine (PrimitiveAEService).
>>     at
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.postInitialize(PrimitiveAnalysisEngineController_impl.java:333)
>>     at
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.initializeAnalysisEngine(PrimitiveAnalysisEngineController_impl.java:211)
>>     at
>> org.apache.uima.aae.UimaAsThreadFactory$1.run(UimaAsThreadFactory.java:114)
>>     at java.lang.Thread.run(Thread.java:722)
>> Caused by: org.apache.uima.UIMARuntimeException: The method
>> CasManager.defineCasPool() was called twice by the same Analysis Engine
>> (PrimitiveAEService).
>>     at
>> org.apache.uima.resource.impl.CasManager_impl.defineCasPool(CasManager_impl.java:183)
>>     at
>> org.apache.uima.resource.impl.CasManager_impl.defineCasPool(CasManager_impl.java:153)
>>     at
>>
>> org.apache.uima.aae.EECasManager_impl.defineCasPool(EECasManager_impl.java:56)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:97)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:81)
>>     at
>> org.apache.uima.aae.AsynchAECasManager_impl.initialize(AsynchAECasManager_impl.java:77)
>>     at
>> org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.postInitialize(PrimitiveAnalysisEngineController_impl.java:303)
>>     ... 3 more
>> I am getting the external resource with:
>>
>> public void initialize(UimaContext aContext) throws
>> ResourceInitializationException {
>>         ...
>>
>>         //External Resources
>>         try {
>>             map = (StringMapResource)
>> aContext.getResourceObject(exResourceGridZoes);
>>         } catch (ResourceAccessException e) {
>>             aContext.getLogger().log(Level.INFO, "Valid makers file not
>> accessible.");
>>             throw new ResourceInitializationException();
>>         }
>>         ...
>> };
>>
>> and the analysis engine descriptor has the following:
>>
>> <externalResourceDependencies>
>>     <externalResourceDependency>
>>       <key>ValidGridZones</key>
>>       <description>A list of valid grid zones.</description>
>>
>> <interfaceName>uima.resources.implementations.StringMapResource_Impl</interfaceName>
>>       <optional>false</optional>
>>     </externalResourceDependency>
>>   </externalResourceDependencies>
>>   <resourceManagerConfiguration>
>>     <externalResources>
>>       <externalResource>
>>         <name>ValidGridZonesFile</name>
>>         <description>A two-column text file that lists all valid grid
>> zones and whether the the zone is a normal one or a split one.</description>
>>         <fileResourceSpecifier>
>>           <fileUrl>file:uima/resources/file/gridzones</fileUrl>
>>         </fileResourceSpecifier>
>>
>> <implementationName>uima.resources.implementations.StringMapResource_Impl</implementationName>
>>       </externalResource>
>>     </externalResources>
>>     <externalResourceBindings>
>>       <externalResourceBinding>
>>         <key>ValidGridZones</key>
>>         <resourceName>ValidMakersFile</resourceName>
>>       </externalResourceBinding>
>>     </externalResourceBindings>
>>   </resourceManagerConfiguration>
>>
>> I am using the StringMapResource code that was in the examples, modified
>> to use a ConcurrentHashMap instead of a regular Hashmap.  According to
>> logging outputs, I believe that the initialize() methods for all 5
>> instances of the analysis engine finished.  I believe that the
>> StringMapResource_Impl is thread-safe and the errors goes away if I do not
>> get the external resource.  Am I doing something wrong in terms of the
>> getting the external resource?  Thanks.
>>
>
>

Reply via email to