You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2014/01/22 14:14:56 UTC
svn commit: r1560343 - in
/stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl:
EnhancementJobHandler.java EventJobManagerImpl.java
Author: rwesten
Date: Wed Jan 22 13:14:56 2014
New Revision: 1560343
URL: http://svn.apache.org/r1560343
Log:
implementation for STANBOL-1267
Modified:
stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
Modified: stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java?rev=1560343&r1=1560342&r2=1560343&view=diff
==============================================================================
--- stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java (original)
+++ stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java Wed Jan 22 13:14:56 2014
@@ -24,9 +24,11 @@ import static org.apache.stanbol.enhance
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -34,10 +36,16 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.stanbol.enhancer.servicesapi.EngineException;
import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine;
import org.apache.stanbol.enhancer.servicesapi.EnhancementEngineManager;
+import org.apache.stanbol.enhancer.servicesapi.helper.EnhancementEngineHelper;
+import org.apache.stanbol.enhancer.servicesapi.helper.ExecutionMetadataHelper;
+import org.apache.stanbol.enhancer.servicesapi.helper.execution.ChainExecution;
+import org.apache.stanbol.enhancer.servicesapi.helper.execution.Execution;
+import org.apache.stanbol.enhancer.servicesapi.helper.execution.ExecutionMetadata;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import org.osgi.service.event.EventHandler;
@@ -60,7 +68,7 @@ public class EnhancementJobHandler imple
* r: ... read lock
* w: ... write lock
*/
- private Logger log = LoggerFactory.getLogger(EnhancementJobHandler.class);
+ private static Logger log = LoggerFactory.getLogger(EnhancementJobHandler.class);
/**
* Keys are {@link EnhancementJob}s currently asynchronously enhancing
* contentItems and the values are the objects used to interrupt the
@@ -349,6 +357,51 @@ public class EnhancementJobHandler imple
}
return startedExecution;
}
+ /**
+ * Helper method that logs the execution time for the Chain and all the
+ * Enhancement Engines on DEBUG level
+ * @param logger The logger used for logging
+ * @param job the job to log. This expects that
+ * <code>{@link EnhancementJob#isFinished()} == true</code>
+ */
+ protected static void logExecutionTimes(Logger logger, EnhancementJob job){
+ if(logger.isInfoEnabled()){
+ try {
+ ExecutionMetadata em = ExecutionMetadata.parseFrom(
+ job.getExecutionMetadata(),job.getContentItem().getUri());
+ ChainExecution ce = em.getChainExecution();
+ long cd = ce.getDuration();
+ logger.info("Executed Chain {} in {}ms", ce.getChainName(),
+ ce.getDuration());
+ logger.info(" > ContentItem: {}", job.getContentItem().getUri().getUnicodeString());
+ List<Execution> ees = new ArrayList<Execution>(em.getEngineExecutions().values());
+ //sort by start date (execution order)
+ Collections.sort(ees, new Comparator<Execution>() {
+ @Override
+ public int compare(Execution e1, Execution e2) {
+ return e1.getStarted().compareTo(e2.getStarted());
+ }
+ });
+ long eds = 0;
+ for(Execution ee : ees){
+ long ed = ee.getDuration();
+ eds = eds + ed;
+ int edp = Math.round(ed*100/(float)cd);
+ logger.info(" - {} in {}ms ({}%)", new Object[]{
+ ee.getExecutionNode().getEngineName(), ed, edp});
+ }
+ float cf = eds/cd;
+ int cfp = Math.round((cf-1)*100);
+ logger.info(" > concurrency: {} ({}%)",cf, cfp);
+ } catch (RuntimeException e) {
+ log.warn("Exception while logging ExecutionTimes for Chain: '" +
+ job.getChainName() + " and ContentItem "+
+ job.getContentItem().getUri() +" to Logger " +
+ logger.getName(),e);
+
+ }
+ }
+ }
/**
* Logs basic infos about the Job as INFO and detailed infos as DEBUG
Modified: stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java?rev=1560343&r1=1560342&r2=1560343&view=diff
==============================================================================
--- stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java (original)
+++ stanbol/branches/release-0.12/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java Wed Jan 22 13:14:56 2014
@@ -68,6 +68,11 @@ import org.slf4j.LoggerFactory;
public class EventJobManagerImpl implements EnhancementJobManager {
private final Logger log = LoggerFactory.getLogger(EventJobManagerImpl.class);
+ /**
+ * Logger for the {@link EnhancementJobManager} interface. This is used
+ * to log statistics about execution times for enhancement jobs
+ */
+ private final Logger enhancementJobManager = LoggerFactory.getLogger(EnhancementJobManager.class);
public static final int DEFAULT_SERVICE_RANKING = 0;
@@ -204,6 +209,9 @@ public class EventJobManagerImpl impleme
throw new ChainException("EnhancementJobManager was deactivated while" +
" enhancing the passed ContentItem "+job.getContentItem()+
" (EnhancementJobManager type: "+getClass()+")");
+ } else {
+ //log infos about the execution times to the enhancementJobManager
+ EnhancementJobHandler.logExecutionTimes(enhancementJobManager, job);
}
}
/**