From 7e82d6a2b1409c4f59993b2946645647e2fb2b17 Mon Sep 17 00:00:00 2001 From: Ralph Straubs Date: Thu, 14 Sep 2017 03:51:45 -0500 Subject: Eliminate hanging when updating Drools containers 'PolicyContainer.updateToVersion(...)' now hangs unless the Drools session threads are stopped prior to the update. This wasn't an issue in the past, and it isn't clear what causes it to happen now. It also happened in the Junit tests I am currently working on. In any case, the 'updateToVersion' method has now been changed to stop the threads prior to an update attempt, do the update, and then restart the threads. Change-Id: I577a67c6e99a68bcbe3c2f476f93c0a72b93451a Issue-ID: POLICY-234 Signed-off-by: Ralph Straubs --- .../java/org/onap/policy/drools/core/PolicyContainer.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java index cf94bfcb..9fc2c837 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java @@ -457,10 +457,19 @@ public class PolicyContainer implements Startable logger.info("updateToVersion:releaseId " + releaseId.toString()); } - // notify all 'PolicySession' instances + // stop all session threads + for (PolicySession session : sessions.values()) + { + session.stopThread(); + } + + // update the version Results results = kieContainer.updateToVersion(releaseId); + + // restart all session threads, and notify the sessions for (PolicySession session : sessions.values()) { + session.startThread(); session.updated(); } -- cgit 1.2.3-korg