This is an automated email from the ASF dual-hosted git repository.
pdallig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new a985c56ab4 [ZEPPELIN-1480] rework websocket sending to prevent partial
frontend hangup (#4800)
a985c56ab4 is described below
commit a985c56ab4db33145fa16f0670ad4db783100bc8
Author: johannesschillinger-dm
<[email protected]>
AuthorDate: Tue Sep 17 13:12:03 2024 +0200
[ZEPPELIN-1480] rework websocket sending to prevent partial frontend hangup
(#4800)
* [ZEPPELIN-1480] synchronize websocket sync to prevent issues with blocked
websockets due to multithreading
* [ZEPPELIN-1480] use async call to websocket for sending
also add debug logging to the class
* [ZEPPELIN-1480] improve error logging
* [ZEPPELIN-1480] re-add license text
* [ZEPPELIN-1480] remove debug logging from getters
* [ZEPPELIN-1480] fix indentation
---
.../main/java/org/apache/zeppelin/socket/NotebookSocket.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git
a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java
b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java
index 58c41cddc3..6050c54b87 100644
---
a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java
+++
b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java
@@ -18,6 +18,8 @@ package org.apache.zeppelin.socket;
import org.apache.commons.lang3.StringUtils;
import org.apache.zeppelin.utils.ServerUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.Map;
@@ -28,6 +30,8 @@ import javax.websocket.Session;
* Notebook websocket.
*/
public class NotebookSocket {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(NotebookSocket.class);
+
private Session session;
private Map<String, Object> headers;
private String user;
@@ -36,6 +40,7 @@ public class NotebookSocket {
this.session = session;
this.headers = headers;
this.user = StringUtils.EMPTY;
+ LOGGER.debug("NotebookSocket created for session: {}", session.getId());
}
public String getHeader(String key) {
@@ -43,7 +48,11 @@ public class NotebookSocket {
}
public void send(String serializeMessage) throws IOException {
- session.getBasicRemote().sendText(serializeMessage);
+ session.getAsyncRemote().sendText(serializeMessage, result -> {
+ if (result.getException() != null) {
+ LOGGER.error("Failed to send async message for User {} in Session {}:
{}", this.user, this.session.getId(), result.getException());
+ }
+ });
}
public String getUser() {
@@ -51,6 +60,7 @@ public class NotebookSocket {
}
public void setUser(String user) {
+ LOGGER.debug("Setting user: {}", user);
this.user = user;
}