Commit 5a87bbe73324054b567cae73a72a05956a55a1d0

Authored by Igor Kulikov
1 parent 2e945c47

Improve websocket sending errors handling.

@@ -40,10 +40,7 @@ import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint; @@ -40,10 +40,7 @@ import org.thingsboard.server.service.telemetry.TelemetryWebSocketMsgEndpoint;
40 import org.thingsboard.server.service.telemetry.TelemetryWebSocketService; 40 import org.thingsboard.server.service.telemetry.TelemetryWebSocketService;
41 import org.thingsboard.server.service.telemetry.TelemetryWebSocketSessionRef; 41 import org.thingsboard.server.service.telemetry.TelemetryWebSocketSessionRef;
42 42
43 -import javax.websocket.RemoteEndpoint;  
44 -import javax.websocket.SendHandler;  
45 -import javax.websocket.SendResult;  
46 -import javax.websocket.Session; 43 +import javax.websocket.*;
47 import java.io.IOException; 44 import java.io.IOException;
48 import java.net.URI; 45 import java.net.URI;
49 import java.security.InvalidParameterException; 46 import java.security.InvalidParameterException;
@@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr @@ -222,20 +219,31 @@ public class TbWebSocketHandler extends TextWebSocketHandler implements Telemetr
222 try { 219 try {
223 this.asyncRemote.sendText(msg, this); 220 this.asyncRemote.sendText(msg, this);
224 } catch (Exception e) { 221 } catch (Exception e) {
225 - log.error("[{}] Failed to send msg", session.getId(), e); 222 + log.trace("[{}] Failed to send msg", session.getId(), e);
  223 + try {
  224 + close(this.sessionRef, CloseStatus.SERVER_ERROR);
  225 + } catch (IOException ioe) {
  226 + log.trace("[{}] Session transport error", session.getId(), ioe);
  227 + }
226 } 228 }
227 } 229 }
228 230
229 @Override 231 @Override
230 public void onResult(SendResult result) { 232 public void onResult(SendResult result) {
231 if (!result.isOK()) { 233 if (!result.isOK()) {
232 - log.error("[{}] Failed to send msg", session.getId(), result.getException());  
233 - }  
234 - String msg = msgQueue.poll();  
235 - if (msg != null) {  
236 - sendMsgInternal(msg); 234 + log.trace("[{}] Failed to send msg", session.getId(), result.getException());
  235 + try {
  236 + close(this.sessionRef, CloseStatus.SERVER_ERROR);
  237 + } catch (IOException ioe) {
  238 + log.trace("[{}] Session transport error", session.getId(), ioe);
  239 + }
237 } else { 240 } else {
238 - isSending = false; 241 + String msg = msgQueue.poll();
  242 + if (msg != null) {
  243 + sendMsgInternal(msg);
  244 + } else {
  245 + isSending = false;
  246 + }
239 } 247 }
240 } 248 }
241 } 249 }