Browse Source

[RedisManager] block updating of too large docs in redis

Jakob Ackermann 5 years ago
parent
commit
757e1e98c5
1 changed files with 7 additions and 0 deletions
  1. 7 0
      services/document-updater/app/js/RedisManager.js

+ 7 - 0
services/document-updater/app/js/RedisManager.js

@@ -468,6 +468,13 @@ module.exports = RedisManager = {
         logger.error({ err: error, doc_id, newDocLines }, error.message)
         return callback(error)
       }
+      // Do a cheap size check on the serialized blob.
+      if (newDocLines.length > Settings.max_doc_length) {
+        const err = new Error('blocking doc update: doc is too large')
+        const docSize = newDocLines.length
+        logger.error({ project_id, doc_id, err, docSize }, err.message)
+        return callback(err)
+      }
       const newHash = RedisManager._computeHash(newDocLines)
 
       const opVersions = appliedOps.map((op) => (op != null ? op.v : undefined))