You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/04/17 13:16:49 UTC

[tomcat] branch 9.0.x updated: Attempt to fix intermittent test failure in CI system

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 98e4b4b  Attempt to fix intermittent test failure in CI system
98e4b4b is described below

commit 98e4b4bbb30e6ec2ca7ffdebaad0c2acdcf959ee
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Apr 17 14:10:01 2020 +0100

    Attempt to fix intermittent test failure in CI system
---
 .../TestWsWebSocketContainerGetOpenSessions.java   | 30 ++++++++++++----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
index 8190d6c..033ee63 100644
--- a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
+++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
@@ -19,9 +19,8 @@ package org.apache.tomcat.websocket;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.servlet.ServletContextEvent;
 import javax.websocket.ClientEndpointConfig;
@@ -355,15 +354,20 @@ public class TestWsWebSocketContainerGetOpenSessions extends WebSocketBaseTest {
 
     public static class Tracker {
 
-        private static final Map<String, Integer> records = new ConcurrentHashMap<>();
-        private static final AtomicInteger updateCount = new AtomicInteger(0);
+        private static final Map<String, Integer> records = new HashMap<>();
+        private static int updateCount = 0;
 
-        public static void addRecord(String key, int count) {
-            records.put(key, Integer.valueOf(count));
-            updateCount.incrementAndGet();
+        public static synchronized void addRecord(String key, int count) {
+            // Need to avoid out of order updates to the Map. If out of order
+            // updates occur, keep the one with the highest count.
+            Integer oldCount = records.get(key);
+            if (oldCount == null || oldCount.intValue() < count) {
+                records.put(key, Integer.valueOf(count));
+            }
+            updateCount++;
         }
 
-        public static boolean checkRecord(String key, int expectedCount) {
+        public static synchronized boolean checkRecord(String key, int expectedCount) {
             Integer actualCount = records.get(key);
             if (actualCount == null) {
                 if (expectedCount == 0) {
@@ -376,16 +380,16 @@ public class TestWsWebSocketContainerGetOpenSessions extends WebSocketBaseTest {
             }
         }
 
-        public static int getUpdateCount() {
-            return updateCount.intValue();
+        public static synchronized int getUpdateCount() {
+            return updateCount;
         }
 
-        public static void reset() {
+        public static synchronized void reset() {
             records.clear();
-            updateCount.set(0);
+            updateCount = 0;
         }
 
-        public static String dump() {
+        public static synchronized String dump() {
             return records.toString();
         }
     }


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