You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by og...@apache.org on 2012/11/16 18:08:37 UTC

svn commit: r1410475 - in /stanbol/trunk/enhancer/jobmanager/event/src/main: java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java resources/OSGI-INF/metatype/metatype.properties

Author: ogrisel
Date: Fri Nov 16 17:08:37 2012
New Revision: 1410475

URL: http://svn.apache.org/viewvc?rev=1410475&view=rev
Log:
STANBOL-808: Make it possible configure the EventJobManagerImpl enhancement job timeout

Modified:
    stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
    stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties

Modified: stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java?rev=1410475&r1=1410474&r2=1410475&view=diff
==============================================================================
--- stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java (original)
+++ stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java Fri Nov 16 17:08:37 2012
@@ -53,7 +53,8 @@ import org.slf4j.LoggerFactory;
 @Service
 @Properties(value={
     //register with a ranking lower than 0 to allow easy overriding by specific
-    @Property(name=Constants.SERVICE_RANKING,intValue=EventJobManagerImpl.DEFAULT_SERVICE_RANKING)
+    @Property(name=Constants.SERVICE_RANKING,intValue=EventJobManagerImpl.DEFAULT_SERVICE_RANKING),
+    @Property(name=EventJobManagerImpl.MAX_ENHANCEMENT_JOB_WAIT_TIME,intValue=EventJobManagerImpl.DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME)
 })
 public class EventJobManagerImpl implements EnhancementJobManager {
 
@@ -61,7 +62,9 @@ public class EventJobManagerImpl impleme
     
     public static final int DEFAULT_SERVICE_RANKING = 0;
 
-    private static final int MAX_ENHANCEMENT_JOB_WAIT_TIME = 10*1000;
+    public static final String MAX_ENHANCEMENT_JOB_WAIT_TIME = "stanbol.maxEnhancementJobWaitTime";
+
+    public static final int DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME = 10 * 1000;
     
     @Reference
     protected ChainManager chainManager;
@@ -72,6 +75,7 @@ public class EventJobManagerImpl impleme
 
     private ServiceRegistration jobHandlerRegistration;
     private EnhancementJobHandler jobHandler;
+    private int maxEnhancementJobWaitTime = DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME;
     
     
     /**
@@ -88,6 +92,11 @@ public class EventJobManagerImpl impleme
         properties.put(org.osgi.service.event.EventConstants.EVENT_TOPIC, TOPIC_JOB_MANAGER);
         jobHandlerRegistration = ctx.getBundleContext().registerService(
             EventHandler.class.getName(), jobHandler, properties);
+        
+        Object maxWaitTime = ctx.getProperties().get(MAX_ENHANCEMENT_JOB_WAIT_TIME);
+        if (maxWaitTime instanceof Integer) {
+            this.maxEnhancementJobWaitTime = (Integer) maxWaitTime;
+        }
     }
     /**
      * Unregisters the {@link EnhancementJobHandler}
@@ -124,7 +133,7 @@ public class EventJobManagerImpl impleme
         }
         if(chain == null){
             throw new IllegalArgumentException("Unable to enhance ContentItem '"+ci.getUri()+
-                "' because NULL was parsed as enhancement chain");
+                "' because NULL was passed as enhancement chain");
         }
         long start = System.currentTimeMillis();
         boolean isDefaultChain = chain.equals(chainManager.getDefault());
@@ -134,7 +143,7 @@ public class EventJobManagerImpl impleme
         EnhancementJobObserver observer = jobHandler.register(job);
         //TODO: allow configuring a max completion time (e.g. 1min)
         while(!observer.hasCompleted() & jobHandler != null){
-            observer.waitForCompletion(MAX_ENHANCEMENT_JOB_WAIT_TIME);
+            observer.waitForCompletion(maxEnhancementJobWaitTime);
         }
         log.info("{} EnhancementJob for ContentItem {} after {}ms",
             new Object[]{ job.isFailed() ? "Failed" : "Finished",
@@ -155,8 +164,8 @@ public class EventJobManagerImpl impleme
         }
         if(!job.isFinished()){
             throw new ChainException("EnhancementJobManager was deactivated while" +
-            		"enhancing the parsed ContentItem "+job.getContentItem()+
-            		"(EnhancementJobManager type: "+getClass()+")!");
+            		" enhancing the passed ContentItem "+job.getContentItem()+
+            		" (EnhancementJobManager type: "+getClass()+")");
         }
     }
 

Modified: stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1410475&r1=1410474&r2=1410475&view=diff
==============================================================================
--- stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties Fri Nov 16 17:08:37 2012
@@ -21,8 +21,12 @@ org.apache.stanbol.enhancer.jobmanager.e
 org.apache.stanbol.enhancer.jobmanager.event.impl.EventJobManagerImpl.description=EnhancementJobManager \
 implementation that used the org.osgi.service.event framework for asynchronously enhancing \
 content items.
+stanbol.maxEnhancementJobWaitTime.name=Job timeout (ms)
+stanbol.maxEnhancementJobWaitTime.description=Maximum time in milliseconds to wait for job completion \
+before aborting.
 
 service.ranking.name=Ranking
 service.ranking.description=The service.ranking for this EnhancementJobManager implementation. \
 If different enhancement job manager are active the one with the highest rank will be used to \
 enhance content parsed to the Stanbol Enhancer RESTful interface.
+