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.