You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2017/07/27 01:00:51 UTC

zeppelin git commit: [ZEPPELIN-2724] Move NotebookSocket.send() out of synchronized block

Repository: zeppelin
Updated Branches:
  refs/heads/master 9367f87b3 -> 2e5900808


[ZEPPELIN-2724] Move NotebookSocket.send() out of synchronized block

### What is this PR for?
This PR tries to address https://issues.apache.org/jira/browse/ZEPPELIN-2724.

### What type of PR is it?
Bug Fix

### Todos
* [x] - Move NotebookSocket.send() out of synchronized block
* [x] - Waits for verification this actually fixes the problem

### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-2724

### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no

Author: Lee moon soo <mo...@apache.org>

Closes #2465 from Leemoonsoo/ZEPPELIN-2724 and squashes the following commits:

a20a57b [Lee moon soo] initialize with empty list
c01246c [Lee moon soo] Move NotebookSocket.send() out of synchronized block


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/2e590080
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/2e590080
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/2e590080

Branch: refs/heads/master
Commit: 2e590080893e427cc64c4c1acc228b80c8705fcd
Parents: 9367f87
Author: Lee moon soo <mo...@apache.org>
Authored: Thu Jul 6 15:56:33 2017 +0900
Committer: Lee moon soo <mo...@apache.org>
Committed: Wed Jul 26 18:00:48 2017 -0700

----------------------------------------------------------------------
 .../apache/zeppelin/socket/NotebookServer.java  | 39 +++++++++++---------
 1 file changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/2e590080/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
index 14e4983..61bc536 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
@@ -473,40 +473,45 @@ public class NotebookServer extends WebSocketServlet
   }
 
   private void broadcast(String noteId, Message m) {
+    List<NotebookSocket> socketsToBroadcast = Collections.emptyList();
     synchronized (noteSocketMap) {
       broadcastToWatchers(noteId, StringUtils.EMPTY, m);
       List<NotebookSocket> socketLists = noteSocketMap.get(noteId);
       if (socketLists == null || socketLists.size() == 0) {
         return;
       }
-      LOG.debug("SEND >> " + m);
-      for (NotebookSocket conn : socketLists) {
-        try {
-          conn.send(serializeMessage(m));
-        } catch (IOException e) {
-          LOG.error("socket error", e);
-        }
+      socketsToBroadcast = new ArrayList<>(socketLists);
+    }
+    LOG.debug("SEND >> " + m);
+    for (NotebookSocket conn : socketsToBroadcast) {
+      try {
+        conn.send(serializeMessage(m));
+      } catch (IOException e) {
+        LOG.error("socket error", e);
       }
     }
   }
 
   private void broadcastExcept(String noteId, Message m, NotebookSocket exclude) {
+    List<NotebookSocket> socketsToBroadcast = Collections.emptyList();
     synchronized (noteSocketMap) {
       broadcastToWatchers(noteId, StringUtils.EMPTY, m);
       List<NotebookSocket> socketLists = noteSocketMap.get(noteId);
       if (socketLists == null || socketLists.size() == 0) {
         return;
       }
-      LOG.debug("SEND >> " + m);
-      for (NotebookSocket conn : socketLists) {
-        if (exclude.equals(conn)) {
-          continue;
-        }
-        try {
-          conn.send(serializeMessage(m));
-        } catch (IOException e) {
-          LOG.error("socket error", e);
-        }
+      socketsToBroadcast = new ArrayList<>(socketLists);
+    }
+
+    LOG.debug("SEND >> " + m);
+    for (NotebookSocket conn : socketsToBroadcast) {
+      if (exclude.equals(conn)) {
+        continue;
+      }
+      try {
+        conn.send(serializeMessage(m));
+      } catch (IOException e) {
+        LOG.error("socket error", e);
       }
     }
   }