Просмотр исходного кода

[RedisManager] block inserting of too large docs into redis

Jakob Ackermann 5 лет назад
Родитель
Сommit
c707d0b345
1 измененных файлов с 7 добавлено и 0 удалено
  1. 7 0
      services/document-updater/app/js/RedisManager.js

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

@@ -72,6 +72,13 @@ module.exports = RedisManager = {
       logger.error({ err: error, doc_id, docLines }, error.message)
       return callback(error)
     }
+    // Do a cheap size check on the serialized blob.
+    if (docLines.length > Settings.max_doc_length) {
+      const docSize = docLines.length
+      const err = new Error('blocking doc insert into redis: doc is too large')
+      logger.error({ project_id, doc_id, err, docSize }, err.message)
+      return callback(err)
+    }
     const docHash = RedisManager._computeHash(docLines)
     // record bytes sent to redis
     metrics.summary('redis.docLines', docLines.length, { status: 'set' })