You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/09/13 12:36:35 UTC
git commit: better shutdown handling for reasoner thread (fixes
MARMOTTA-307)
Updated Branches:
refs/heads/develop c7563c0d7 -> 6e97cc082
better shutdown handling for reasoner thread (fixes MARMOTTA-307)
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/6e97cc08
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/6e97cc08
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/6e97cc08
Branch: refs/heads/develop
Commit: 6e97cc082354952466325b4efda949674ef6f2ec
Parents: c7563c0
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Fri Sep 13 12:36:31 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Fri Sep 13 12:36:31 2013 +0200
----------------------------------------------------------------------
.../marmotta/kiwi/reasoner/engine/ReasoningEngine.java | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/6e97cc08/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
index 47891c6..1b189d8 100644
--- a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
+++ b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
@@ -905,7 +905,7 @@ public class ReasoningEngine implements TransactionListener {
if(force) {
log.warn("forced shutdown of reasoning service initiated, state will be inconsistent ...");
- reasonerThread.shutdown();
+ reasonerThread.shutdown(true);
for(int i = 0; i<3 && isRunning(); i++) {
log.warn("reasoner not yet finished, waiting for 1 seconds (try={})", i+1);
@@ -929,7 +929,7 @@ public class ReasoningEngine implements TransactionListener {
}
}
- reasonerThread.shutdown();
+ reasonerThread.shutdown(false);
}
isshutdown = true;
@@ -957,6 +957,7 @@ public class ReasoningEngine implements TransactionListener {
private class SKWRLReasoner extends Thread {
private boolean shutdown = false;
private boolean running = false;
+ private boolean forceshutdown = false;
private SKWRLReasoner() {
super("SKWRL Reasoner " + ++indexerCounter);
@@ -964,9 +965,10 @@ public class ReasoningEngine implements TransactionListener {
start();
}
- public void shutdown() {
+ public void shutdown(boolean force) {
log.info("REASONER: signalling shutdown to reasoner thread");
shutdown = true;
+ forceshutdown = force;
this.interrupt();
}
@@ -980,7 +982,7 @@ public class ReasoningEngine implements TransactionListener {
startTask(getName(), TASK_GROUP);
- while (!shutdown || reasoningQueue.size() > 0) {
+ while (!forceshutdown && (!shutdown || reasoningQueue.size() > 0)) {
running = false;
try {
updateTaskStatus("idle");
@@ -993,10 +995,13 @@ public class ReasoningEngine implements TransactionListener {
executeReasoner(data);
} catch (InterruptedException ex) {
+ } catch (RuntimeException ex) {
+ // can happen on forced shutdown
} catch (Exception ex) {
log.warn("reasoning task threw an exception",ex);
}
}
+ running = false;
try {
endTask();
} catch (Exception ex) {