mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: fix ConcurrentModificationException in event map
parent
b6e37ddba1
commit
aa8832b7fe
|
|
@ -20,10 +20,10 @@ package io.openvidu.test.e2e;
|
||||||
import static org.openqa.selenium.OutputType.BASE64;
|
import static org.openqa.selenium.OutputType.BASE64;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
|
@ -162,7 +162,7 @@ public class OpenViduEventManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void on(int numberOfUser, String eventType, String eventCategory, Consumer<JsonObject> callback) {
|
public void on(int numberOfUser, String eventType, String eventCategory, Consumer<JsonObject> callback) {
|
||||||
this.eventCallbacksByUser.putIfAbsent(numberOfUser, new HashMap<>());
|
this.eventCallbacksByUser.putIfAbsent(numberOfUser, new ConcurrentHashMap<>());
|
||||||
this.eventCallbacksByUser.get(numberOfUser).putIfAbsent(eventType + "-" + eventCategory, new HashSet<>());
|
this.eventCallbacksByUser.get(numberOfUser).putIfAbsent(eventType + "-" + eventCategory, new HashSet<>());
|
||||||
this.eventCallbacksByUser.get(numberOfUser).get(eventType + "-" + eventCategory).add(callback);
|
this.eventCallbacksByUser.get(numberOfUser).get(eventType + "-" + eventCategory).add(callback);
|
||||||
}
|
}
|
||||||
|
|
@ -287,7 +287,7 @@ public class OpenViduEventManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public AtomicInteger getNumEvents(int numberOfUser, String eventTypeAndCategory) {
|
public AtomicInteger getNumEvents(int numberOfUser, String eventTypeAndCategory) {
|
||||||
this.eventNumbersByUser.putIfAbsent(numberOfUser, new HashMap<>());
|
this.eventNumbersByUser.putIfAbsent(numberOfUser, new ConcurrentHashMap<>());
|
||||||
return this.eventNumbersByUser.get(numberOfUser).computeIfAbsent(eventTypeAndCategory,
|
return this.eventNumbersByUser.get(numberOfUser).computeIfAbsent(eventTypeAndCategory,
|
||||||
k -> new AtomicInteger(0));
|
k -> new AtomicInteger(0));
|
||||||
}
|
}
|
||||||
|
|
@ -306,7 +306,7 @@ public class OpenViduEventManager {
|
||||||
for (int i = 0; i < getNumEvents(numberOfUser, eventTypeAndCategory).get(); i++) {
|
for (int i = 0; i < getNumEvents(numberOfUser, eventTypeAndCategory).get(); i++) {
|
||||||
cd.countDown();
|
cd.countDown();
|
||||||
}
|
}
|
||||||
this.eventCountdownsByUser.putIfAbsent(numberOfUser, new HashMap<>());
|
this.eventCountdownsByUser.putIfAbsent(numberOfUser, new ConcurrentHashMap<>());
|
||||||
this.eventCountdownsByUser.get(numberOfUser).put(eventTypeAndCategory, cd);
|
this.eventCountdownsByUser.get(numberOfUser).put(eventTypeAndCategory, cd);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -368,7 +368,7 @@ public class OpenViduEventManager {
|
||||||
|
|
||||||
executeInNamedLock(numberOfUser + eventTypeAndCategory, () -> {
|
executeInNamedLock(numberOfUser + eventTypeAndCategory, () -> {
|
||||||
getNumEvents(numberOfUser, eventTypeAndCategory).incrementAndGet();
|
getNumEvents(numberOfUser, eventTypeAndCategory).incrementAndGet();
|
||||||
this.eventCountdownsByUser.putIfAbsent(numberOfUser, new HashMap<>());
|
this.eventCountdownsByUser.putIfAbsent(numberOfUser, new ConcurrentHashMap<>());
|
||||||
if (this.eventCountdownsByUser.get(numberOfUser).get(eventTypeAndCategory) != null) {
|
if (this.eventCountdownsByUser.get(numberOfUser).get(eventTypeAndCategory) != null) {
|
||||||
this.eventCountdownsByUser.get(numberOfUser).get(eventTypeAndCategory).countDown();
|
this.eventCountdownsByUser.get(numberOfUser).get(eventTypeAndCategory).countDown();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue