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 mc...@apache.org on 2007/09/17 14:31:23 UTC

svn commit: r576399 - in /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers: Invoker.java WorkerLock.java

Author: mckierna
Date: Mon Sep 17 05:31:22 2007
New Revision: 576399

URL: http://svn.apache.org/viewvc?rev=576399&view=rev
Log:
potential NPE in populateRMMsgContext

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

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/Invoker.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/Invoker.java?rev=576399&r1=576398&r2=576399&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/Invoker.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/Invoker.java Mon Sep 17 05:31:22 2007
@@ -120,11 +120,15 @@
 							work = contextMgr.wrapWithContext(work, invoker.getContext());
 						}
 						
-						threadPool.execute(work);
-					
-						//adding the workId to the lock after assigning it to a thread makes sure 
-						//that all the workIds in the Lock are handled by threads.
-			            getWorkerLock().addWork(workId, worker);
+						try {
+							// Try and set the lock up before we start the thread, but roll it back
+							// if we hit any problems
+							if(worker.getLock().addWork(workId, worker)){
+								threadPool.execute(work);
+							}
+						} catch(Exception e) {
+							worker.getLock().removeWork(workId);
+						}
 
 						long msgNumber = invoker.getMsgNo();
 						//if necessary, update the "next message number" bean under this transaction

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/WorkerLock.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/WorkerLock.java?rev=576399&r1=576398&r2=576399&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/WorkerLock.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/WorkerLock.java Mon Sep 17 05:31:22 2007
@@ -26,9 +26,10 @@
 
 	}
 	
-  public synchronized void addWork (String work, Object owner) {
-    if(locks.containsKey(work)) return;
+  public synchronized boolean addWork (String work, Object owner) {
+    if(locks.containsKey(work)) return false;
     locks.put(work, owner);
+	return true;
   }
 	
 	public synchronized void removeWork (String work) {



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