You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2016/09/29 15:19:20 UTC
svn commit: r1762795 - in
/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae:
controller/AggregateAnalysisEngineController_impl.java
controller/BaseAnalysisEngineController.java jmx/ServiceInfo.java
jmx/ServiceInfoMBean.java
Author: eae
Date: Thu Sep 29 15:19:20 2016
New Revision: 1762795
URL: http://svn.apache.org/viewvc?rev=1762795&view=rev
Log:
UIMA-5120 rearrange code to support dynamic enable/disable; add Level.INFO about CAS logging
Modified:
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfo.java
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfoMBean.java
Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java?rev=1762795&r1=1762794&r2=1762795&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java Thu Sep 29 15:19:20 2016
@@ -38,14 +38,12 @@ import java.util.concurrent.locks.Reentr
import org.apache.uima.UIMAFramework;
import org.apache.uima.UIMARuntimeException;
import org.apache.uima.aae.AsynchAECasManager;
+import org.apache.uima.aae.AsynchAECasManager_impl;
import org.apache.uima.aae.InProcessCache;
import org.apache.uima.aae.InProcessCache.CacheEntry;
-import org.apache.uima.aae.AsynchAECasManager_impl;
import org.apache.uima.aae.InputChannel;
-import org.apache.uima.aae.UIDGenerator;
import org.apache.uima.aae.UIMAEE_Constants;
import org.apache.uima.aae.UimaClassFactory;
-import org.apache.uima.aae.WarmUpDataProvider;
import org.apache.uima.aae.controller.LocalCache.CasStateEntry;
import org.apache.uima.aae.delegate.ControllerDelegate;
import org.apache.uima.aae.delegate.Delegate;
@@ -92,6 +90,7 @@ import org.apache.uima.resource.metadata
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.CasCreationUtils;
import org.apache.uima.util.Level;
+import org.apache.uima.util.Logger;
import org.apache.uima.util.TypeSystemUtil;
import org.apache.uima.util.XMLInputSource;
@@ -1285,14 +1284,14 @@ public class AggregateAnalysisEngineCont
// iterate over the controller list to find one with a matching key
for( AnalysisEngineController c : childControllerList ) {
- if ( analysisEngineKey.equals(c.getKey())) {
+ if ( analysisEngineKey.equals(c.getServiceInfo().getServiceKey())) {
// from this controller's MBean determine if CAS logging
// should be done
if ( c.getServiceInfo() != null ) {
// lookup controller's MBean
logCas = c.getServiceInfo().isLogCasEnabled();
+ break;
}
- break;
}
}
// Find the endpoint for the delegate
@@ -1383,25 +1382,33 @@ public class AggregateAnalysisEngineCont
*
*/
private void logCasForEndpoint(String analysisEngineKey, CAS cas) throws Exception {
+ if (null == enableCasLogMap.get(analysisEngineKey)) {
+ String dir = analysisEngineKey;
+ if (null != delegateKey) {
+ dir = delegateKey + "/" + analysisEngineKey;
+ }
+ dir = dir.replace('/', '-');
+ setCasLoggingDirectory(analysisEngineKey, dir);
+ }
if (!((Boolean)enableCasLogMap.get(analysisEngineKey))) {
// create dir and serialize typesystem
- boolean status = new File((String)casLogDirMap.get(analysisEngineKey)).mkdir();
+ new File((String)casLogDirMap.get(analysisEngineKey)).mkdir();
TypeSystemDescription tsd = TypeSystemUtil.typeSystem2TypeSystemDescription(cas.getTypeSystem());
File tsd2xml = new File(((String)casLogDirMap.get(analysisEngineKey))+"/typesystem.xml");
FileOutputStream os = new FileOutputStream(tsd2xml);
tsd.toXML(os);
os.close();
enableCasLogMap.put(analysisEngineKey, true);
- // iterate over the controller list to find one with a matching key
- for( AnalysisEngineController c : childControllerList ) {
- if ( analysisEngineKey.equals(c.getKey())) {
- if ( c.getServiceInfo() != null ) {
- // Enable CAS logging
- c.getServiceInfo().setLogCasEnableed();
- }
- break;
- }
+ if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
+ String logdir = (String)casLogDirMap.get(analysisEngineKey);
+ String[] dirs = logdir.split("/");
+ String comp = dirs[dirs.length-1];
+ comp = comp.replace('-', '/');
+ UIMAFramework.getLogger(CLASS_NAME).log(Level.INFO, "UIMA_CASLOG: CAS logging started for "+
+ comp + " to " + logdir);
}
+ // set initialization time to use for CasLogging
+ initializationTime=System.nanoTime();
}
// create XmiCas file name
Long now = Long.valueOf((System.nanoTime()-initializationTime)/1000);
@@ -3256,6 +3263,76 @@ public class AggregateAnalysisEngineCont
}
}
}
+
+ //document the CAS logging specification
+ if (isTopLevelComponent() && UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
+ Logger logger = UIMAFramework.getLogger(CLASS_NAME);
+
+ String baseDir = System.getProperty("user.dir");
+ if (null != System.getProperty("UIMA_CASLOG_BASE_DIRECTORY")) {
+ baseDir = System.getProperty("UIMA_CASLOG_BASE_DIRECTORY");
+ }
+ logger.log(Level.INFO, "UIMA_CASLOG: Base CAS log directory = "+baseDir);
+ if (null != System.getProperty("UIMA_CASLOG_TYPE_NAME") ||
+ null != System.getProperty("UIMA_CASLOG_FEATURE_NAME")) {
+ if (null == System.getProperty("UIMA_CASLOG_TYPE_NAME") ||
+ null == System.getProperty("UIMA_CASLOG_FEATURE_NAME")) {
+ logger.log(Level.INFO, "UIMA_CASLOG: Invalid UIMA_CASLOG specification. Both type and feature names must be specified");
+ }
+ else {
+ String typeName = System.getProperty("UIMA_CASLOG_TYPE_NAME");
+ String featureName = System.getProperty("UIMA_CASLOG_FEATURE_NAME");
+ logger.log(Level.INFO, "UIMA_CASLOG: CAS file names defined by "+typeName+" and "+featureName);
+ }
+ }
+ if (null != System.getProperty("UIMA_CASLOG_VIEW_NAME")) {
+ logger.log(Level.INFO, "UIMA_CASLOG: where FS is found in view "+System.getProperty("UIMA_CASLOG_VIEW_NAME"));
+ }
+
+ String casLogComponents = System.getProperty("UIMA_CASLOG_COMPONENT_ARRAY");
+ if (null != casLogComponents) {
+ logger.log(Level.INFO, "UIMA_CASLOG: The following delegates have CAS logging enabled: "+ casLogComponents);
+ }
+ }
+
+
+ // enable CAS logging for delegates in this aggregate
+ String casLogComponents = System.getProperty("UIMA_CASLOG_COMPONENT_ARRAY");
+ // check requested Cas logging
+ if (casLogComponents!= null) {
+ String[] comps = casLogComponents.split(" ");
+ for (String comp : comps) {
+ String[] subcomps = comp.split("/");
+ if (1 == subcomps.length) {
+ ((AggregateAnalysisEngineController)this).setCasLoggingDirectory(comp, comp);
+ // iterate over the controller list to find one with a matching key
+ for( AnalysisEngineController c : childControllerList ) {
+ if ( c.getServiceInfo() != null ) {
+ if ( comp.equals(c.getServiceInfo().getServiceKey())) {
+ // Enable CAS logging
+ c.getServiceInfo().setLogCasEnabled();
+ break;
+ }
+ }
+ }
+ }
+ else {
+ if (this.delegateKey.equals(subcomps[subcomps.length-2])) {
+ for( AnalysisEngineController c : childControllerList ) {
+ if ( c.getServiceInfo() != null ) {
+ if ( subcomps[subcomps.length-1].equals(c.getServiceInfo().getServiceKey())) {
+ // Enable CAS logging
+ setCasLoggingDirectory(subcomps[subcomps.length-1], comp);
+ c.getServiceInfo().setLogCasEnabled();
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
}
public void changeCollocatedDelegateState( String delegateKey, ServiceState state ) throws Exception {
@@ -3346,7 +3423,6 @@ public class AggregateAnalysisEngineCont
if (enableCasLogMap == null)
enableCasLogMap = new HashMap<String, Boolean>();
enableCasLogMap.put(key, false);
- initializationTime = System.nanoTime();
}
public int getServiceCasPoolSize() {
return ((AsynchAECasManager_impl)casManager).getCasPoolSize();
Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java?rev=1762795&r1=1762794&r2=1762795&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java Thu Sep 29 15:19:20 2016
@@ -407,16 +407,6 @@ public abstract class BaseAnalysisEngine
// Override uima core jmx domain setting
mbean.setName(getComponentName(), getUimaContextAdmin(), jmxManagement.getJmxDomain());
- // check requested Cas logging
- if (casLogComponents!= null && (this instanceof AggregateAnalysisEngineController)) {
- String[] comps = casLogComponents.split(" ");
- for (String comp : comps) {
- String[] subcomps = comp.split("/");
- if (1 == subcomps.length) {
- ((AggregateAnalysisEngineController)this).setCasLoggingDirectory(comp, comp);
- }
- }
- }
if (resourceSpecifier instanceof AnalysisEngineDescription) {
// Is this service a CAS Multiplier?
if (((AnalysisEngineDescription) resourceSpecifier).getAnalysisEngineMetaData()
@@ -438,19 +428,7 @@ public abstract class BaseAnalysisEngine
} else {
UimaContext childContext = parentController.getChildUimaContext(endpointName);
if ( childContext != null && childContext instanceof UimaContextAdmin ) {
- // check requested Cas logging
String qualifiedContextName = ((UimaContextAdmin)childContext).getQualifiedContextName();
- if (casLogComponents!= null && (this instanceof AggregateAnalysisEngineController) &&
- casLogComponents.contains(anEndpointName)) {
- String[] comps = casLogComponents.split(" ");
- for (String comp : comps) {
- String[] subcomps = comp.split("/");
- if (1 < subcomps.length && subcomps[subcomps.length-2].equals(anEndpointName)) {
- ((AggregateAnalysisEngineController)this).setCasLoggingDirectory(subcomps[subcomps.length-1],
- comp);
- }
- }
- }
}
paramsMap.put(Resource.PARAM_UIMA_CONTEXT, childContext);
Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfo.java?rev=1762795&r1=1762794&r2=1762795&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfo.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfo.java Thu Sep 29 15:19:20 2016
@@ -66,7 +66,7 @@ public class ServiceInfo implements Serv
public boolean isLogCasEnabled() {
return logCasEnabled;
}
- public void setLogCasEnableed() {
+ public void setLogCasEnabled() {
logCasEnabled = !logCasEnabled; // toggle ON and OFF
}
public void setCmRegisteredName(String uniqueName ) {
Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfoMBean.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfoMBean.java?rev=1762795&r1=1762794&r2=1762795&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfoMBean.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/ServiceInfoMBean.java Thu Sep 29 15:19:20 2016
@@ -46,4 +46,5 @@ public interface ServiceInfoMBean extend
public boolean isLogCasEnabled();
+ public void setLogCasEnabled();
}