NIHVIVO-1054 Convert the Thread instances to VitroBackgroundThread instances, so we can track when the system becomes idle.

This commit is contained in:
j2blake 2012-10-15 19:26:43 +00:00
parent b4796c649a
commit 8c12deacec
3 changed files with 15 additions and 3 deletions

View file

@ -1,6 +1,8 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.controller.freemarker;
import static edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread.WorkLevel.WORKING;
import java.util.HashMap;
import java.util.Map;
@ -14,6 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Exc
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
import edu.cornell.mannlib.vitro.webapp.reasoner.SimpleReasoner;
import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread;
public class SimpleReasonerRecomputeController extends FreemarkerHttpServlet {
@ -49,7 +52,10 @@ public class SimpleReasonerRecomputeController extends FreemarkerHttpServlet {
} else {
String submit = (String)vreq.getParameter("submit");
if (submit != null) {
new Thread(new Recomputer((simpleReasoner))).start();
VitroBackgroundThread thread = new VitroBackgroundThread(new Recomputer((simpleReasoner)),
"SimpleReasonerRecomputController.Recomputer");
thread.setWorkLevel(WORKING);
thread.start();
messageStr = "Recompute of inferences started. See vivo log for further details.";
} else {
body.put("formAction", UrlBuilder.getUrl("/RecomputeInferences"));

View file

@ -2,6 +2,8 @@
package edu.cornell.mannlib.vitro.webapp.reasoner;
import static edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread.WorkLevel.WORKING;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
@ -42,6 +44,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.event.BulkUpdateEvent;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.model.RDFServiceModel;
import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread;
/**
* Allows for real-time incremental materialization or retraction of RDFS-
@ -1536,7 +1539,10 @@ public class SimpleReasoner extends StatementListener {
log.info("received a bulk update end event");
if (!deltaComputerProcessing) {
deltaComputerProcessing = true;
new Thread(new DeltaComputer(),"DeltaComputer").start();
VitroBackgroundThread thread = new VitroBackgroundThread(new DeltaComputer(),
"SimpleReasoner.DeltaComputer");
thread.setWorkLevel(WORKING);
thread.start();
} else {
eventCount--;
log.info("received a bulk update end event while currently processing in aynchronous mode. Event count = " + eventCount);

View file

@ -66,7 +66,7 @@ public class VitroBackgroundThread extends Thread {
allThreads.add(new WeakReference<VitroBackgroundThread>(this));
}
protected void setWorkLevel(WorkLevel level, String... flags) {
public void setWorkLevel(WorkLevel level, String... flags) {
log.debug("Set work level on '" + this.getName() + "' to " + level
+ ", flags=" + flags);
stamp = new WorkLevelStamp(level, flags);