This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.discovery.base-1.1.0
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-base.git

commit 37ae575d43ba65bd2340da4703d8d433116d46b5
Author: Stefan Egli <[email protected]>
AuthorDate: Mon Nov 9 10:13:58 2015 +0000

    SLING-5279 : tests made more stable wrt stopping a VirtualInstance that was 
likely not done yet and interfered with subsequent test runs
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/base@1713364
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../discovery/base/its/setup/VirtualInstance.java  | 41 +++++++++++++++++-----
 1 file changed, 32 insertions(+), 9 deletions(-)

diff --git 
a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java 
b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
index 2a12483..0309d91 100644
--- 
a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
+++ 
b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
@@ -105,21 +105,37 @@ public class VirtualInstance {
 
        private final int intervalInSeconds;
 
-       private boolean stopped_ = false;
+       private boolean stopping_ = false;
 
-               public ViewCheckerRunner(int intervalInSeconds) {
+        private volatile boolean stopped_ = false;
+
+        public ViewCheckerRunner(int intervalInSeconds) {
                this.intervalInSeconds = intervalInSeconds;
        }
 
                public synchronized void stop() {
                        logger.info("Stopping Instance ["+slingId+"]");
-                       stopped_ = true;
+                       stopping_ = true;
+                       this.notifyAll();
+               }
+               
+               public boolean hasStopped() {
+                   return stopped_;
                }
 
                public void run() {
+                   try{
+                       doRun();
+                   } finally {
+                       stopped_ = true;
+                logger.info("Instance ["+slingId+"] stopped.");
+                   }
+               }
+               
+               public void doRun() {
                        while(true) {
                                synchronized(this) {
-                                       if (stopped_) {
+                                       if (stopping_) {
                                                logger.info("Instance 
["+slingId+"] stopps.");
                                                return;
                                        }
@@ -129,11 +145,13 @@ public class VirtualInstance {
                                } catch(Exception e) {
                                    logger.error("run: ping connector for 
slingId="+slingId+" threw exception: "+e, e);
                                }
-                               try {
-                                       Thread.sleep(intervalInSeconds*1000);
-                               } catch (InterruptedException e) {
-                                       e.printStackTrace();
-                                       return;
+                               synchronized(this) {
+                               try {
+                                       this.wait(intervalInSeconds*1000);
+                               } catch (InterruptedException e) {
+                                       e.printStackTrace();
+                                       return;
+                               }
                                }
                        }
                }
@@ -318,6 +336,11 @@ public class VirtualInstance {
     public void stopViewChecker() throws Throwable {
        if (viewCheckerRunner!=null) {
                viewCheckerRunner.stop();
+               while(!viewCheckerRunner.hasStopped()) {
+                   logger.info("stopViewChecker: ["+getDebugName()+"] waiting 
for viewCheckerRunner to stop");
+                   Thread.sleep(500);
+               }
+            logger.info("stopViewChecker: ["+getDebugName()+"] 
viewCheckerRunner stopped");
                viewCheckerRunner = null;
        }
         try{

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to