Author: veithen
Date: Mon Jul  6 19:01:34 2015
New Revision: 1689477

URL: http://svn.apache.org/r1689477
Log:
Fix another concurrency issue similar to AXIS-2850 and ensure that stubs are 
thread safe.

Modified:
    
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
    
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java

Modified: 
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
URL: 
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java?rev=1689477&r1=1689476&r2=1689477&view=diff
==============================================================================
--- 
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
 (original)
+++ 
axis/axis1/java/trunk/axis-rt-core/src/main/java/org/apache/axis/client/Stub.java
 Mon Jul  6 19:01:34 2015
@@ -432,11 +432,14 @@ public abstract class Stub implements ja
      * @return
      */
     public Call _createCall() throws ServiceException {
-        _call = (Call) service.createCall();
+        // A single stub instance may be used concurrently by multiple 
threads; therefore we need
+        // to return the value of the local call variable instead of reading 
the _call attribute.
+        Call call = (Call) service.createCall();
+        _call = call;
 
         // TODO: There is a lot of code in the generated stubs that
         // can be moved here.
-        return _call;
+        return call;
     }
 
     /**

Modified: 
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
URL: 
http://svn.apache.org/viewvc/axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java?rev=1689477&r1=1689476&r2=1689477&view=diff
==============================================================================
--- 
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
 (original)
+++ 
axis/axis1/java/trunk/integration/src/test/java/test/wsdl/multithread/MultithreadTestCase.java
 Mon Jul  6 19:01:34 2015
@@ -46,7 +46,7 @@ public class MultithreadTestCase extends
     private void testMultithreading(StubSupplier stubSupplier) throws 
Throwable {
         Report report = new Report();
         final int numThreads = 50;
-        final int numInvocations = 4;
+        final int numInvocations = 10;
         CountDownLatch readyLatch = new CountDownLatch(numThreads);
         CountDownLatch startLatch = new CountDownLatch(1);
         Thread[] threads = new Thread[numThreads];


Reply via email to