Thanks for the help Jaroslaw:

The analysis engine in question is just a primative with the number of 
instances set to 5.


________________________________
 From: Jaroslaw Cwiklik <[email protected]>
To: [email protected]; GATE User <[email protected]> 
Sent: Thursday, June 6, 2013 12:19 PM
Subject: Re: Error when deploying 5 instances of AE with External Resource, 
UIMA-AS 2.4.1 Snapshot
 


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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>>To: "[email protected]" <[email protected]>
>>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