about summary refs log tree commit diff
path: root/streaming
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-02-16 14:37:26 +0100
committerGitHub <noreply@github.com>2022-02-16 14:37:26 +0100
commit6ea80ba2a22aaeae4f773b28b33168395c5297af (patch)
treeb9e12b6a506b290b124671c33f926902b7f2f45f /streaming
parent8f537a116802ee39727d8b6c286883b9440ab51a (diff)
Change streaming server error messages when failing to parse client input (#17559)
Fixes #17541

- prefix JSON parsing error message by “Error parsing message from …”
- output user id if a user is logged in, IP address otherwise
- reduce log level from error to warning when a user is logged in, and to silly
  otherwise
Diffstat (limited to 'streaming')
-rw-r--r--streaming/index.js15
1 files changed, 10 insertions, 5 deletions
diff --git a/streaming/index.js b/streaming/index.js
index 47f938b86..3db94b160 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -92,13 +92,18 @@ const numWorkers = +process.env.STREAMING_CLUSTER_NUM || (env === 'development'
 
 /**
  * @param {string} json
+ * @param {any} req
  * @return {Object.<string, any>|null}
  */
-const parseJSON = (json) => {
+const parseJSON = (json, req) => {
   try {
     return JSON.parse(json);
   } catch (err) {
-    log.error(err);
+    if (req.accountId) {
+      log.warn(req.requestId, `Error parsing message from user ${req.accountId}: ${err}`);
+    } else {
+      log.silly(req.requestId, `Error parsing message from ${req.remoteAddress}: ${err}`);
+    }
     return null;
   }
 };
@@ -450,7 +455,7 @@ const startWorker = async (workerId) => {
    */
   const createSystemMessageListener = (req, eventHandlers) => {
     return message => {
-      const json = parseJSON(message);
+      const json = parseJSON(message, req);
 
       if (!json) return;
 
@@ -573,7 +578,7 @@ const startWorker = async (workerId) => {
     log.verbose(req.requestId, `Starting stream from ${ids.join(', ')} for ${accountId}`);
 
     const listener = message => {
-      const json = parseJSON(message);
+      const json = parseJSON(message, req);
 
       if (!json) return;
 
@@ -1037,7 +1042,7 @@ const startWorker = async (workerId) => {
     ws.on('error', onEnd);
 
     ws.on('message', data => {
-      const json = parseJSON(data);
+      const json = parseJSON(data, session.request);
 
       if (!json) return;