Cleaning up unnecessary synchronization in UI web socket servlet.
Change-Id: Ifcce1dae1ebc8566634ce50d530b133416ec6b8b
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
index da2c4e9..2db0c61 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
@@ -16,6 +16,7 @@
package org.onosproject.ui.impl;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocketServlet;
@@ -25,7 +26,6 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
-import java.util.Iterator;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
@@ -82,9 +82,7 @@
String userName = p != null ? p.getName() : FAKE_USERNAME;
UiWebSocket socket = new UiWebSocket(directory, userName);
- synchronized (sockets) {
- sockets.add(socket);
- }
+ sockets.add(socket);
return socket;
}
@@ -125,16 +123,11 @@
private class Pruner extends TimerTask {
@Override
public void run() {
- synchronized (sockets) {
- Iterator<UiWebSocket> it = sockets.iterator();
- while (it.hasNext()) {
- UiWebSocket socket = it.next();
- if (socket.isIdle()) {
- it.remove();
- socket.close();
- }
- }
- }
+ ImmutableSet<UiWebSocket> set = ImmutableSet.copyOf(sockets);
+ set.stream().filter(UiWebSocket::isIdle).forEach(s -> {
+ sockets.remove(s);
+ s.close();
+ });
}
}
}