You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2019/05/28 06:44:25 UTC

svn commit: r1860178 - /jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java

Author: vladimirsitnikov
Date: Tue May 28 06:44:25 2019
New Revision: 1860178

URL: http://svn.apache.org/viewvc?rev=1860178&view=rev
Log:
Fix race condition in jms.client.ClientPool#clearClient

ClientPool must not close the same client multiple times
even if clearClient is called concurrently

Modified:
    jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java

Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java?rev=1860178&r1=1860177&r2=1860178&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java (original)
+++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java Tue May 28 06:44:25 2019
@@ -68,8 +68,10 @@ public class ClientPool {
      */
     public static void clearClient() {
         synchronized (CLIENTS) {
-            CLIENTS.forEach(JOrphanUtils::closeQuietly);            
+            CLIENTS.forEach(JOrphanUtils::closeQuietly);
+            // Clear should be inside synchronized block to avoid closing the same client
+            // multiple times when clearClient is called from multiple threads concurrently
+            CLIENTS.clear();
         }
-        CLIENTS.clear();
     }
 }