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];