You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ga...@apache.org on 2007/10/03 11:50:19 UTC

svn commit: r581547 - /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java

Author: gatfora
Date: Wed Oct  3 02:50:18 2007
New Revision: 581547

URL: http://svn.apache.org/viewvc?rev=581547&view=rev
Log:
Close timing window when stopping SandeshaThreads and another thread requesting that it starts.

Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java?rev=581547&r1=581546&r2=581547&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SandeshaThread.java Wed Oct  3 02:50:18 2007
@@ -41,6 +41,7 @@
 	private boolean hasStoppedRunning = false;
 	private boolean hasPausedRunning = false;
 	private boolean pauseRequired = false;
+	private boolean stopRequested = false;
 	
 	private int sleepTime;
   private WorkerLock lock = null;
@@ -88,8 +89,8 @@
 			}
 		}
 		
-	  //we can now request a pause - the next pause will be ours
-	  pauseRequired = true;
+		//we can now request a pause - the next pause will be our
+		pauseRequired = true;
 				
 		if(hasStoppedRunning() || !isThreadStarted()){
 			throw new IllegalStateException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotPauseThread));
@@ -121,6 +122,7 @@
 		if (isThreadStarted()) {
 			// the invoker is started so stop it
 			runThread = false;
+			stopRequested = true;
 			// wait for it to finish
 			while (!hasStoppedRunning()) {
 				try {
@@ -129,12 +131,14 @@
 					//ignore
 				}
 			}
+			
+			stopRequested = false;
 		}
 		
-	    // In a unit test, tracing 'this' once the thread was stopped caused
-	    // an exception, so we just trace exit.
-	    if (log.isDebugEnabled())
-	      log.debug("Exit: SandeshaThread::stopRunning");
+    // In a unit test, tracing 'this' once the thread was stopped caused
+    // an exception, so we just trace exit.
+    if (log.isDebugEnabled())
+      log.debug("Exit: SandeshaThread::stopRunning");
 	}
 	
 	public synchronized boolean isThreadStarted() {
@@ -158,7 +162,7 @@
 		SequenceEntry entry = new SequenceEntry(sequenceID, rmSource);
 		if (!workingSequences.contains(entry)) workingSequences.add(entry);
 		
-		if (!isThreadStarted()) {
+		if (!isThreadStarted() && !stopRequested) {
 			if(log.isDebugEnabled()) log.debug("Starting thread");
 
 			this.context = context;
@@ -183,7 +187,9 @@
 				log.error(e);
 				throw new RuntimeException(e);
 			}
-		} else {
+
+			
+		} else if (!stopRequested){
 			if(log.isDebugEnabled()) log.debug("Waking thread");
 			wakeThread();
 		}



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org