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

[misc] SafeJsonParse: align the size limit with the frontend->rt limit

frontend -> real-time and doc-updater -> real-time should be in sync.
Otherwise we can send a payload to doc-updater, but can not receive the
 confirmation of it -- and the client will send it again in a loop.

Also log the size of the payload.
Jakob Ackermann 6 лет назад
Родитель
Сommit
cb675d38c2

+ 2 - 2
services/real-time/app/coffee/SafeJsonParse.coffee

@@ -3,8 +3,8 @@ logger = require "logger-sharelatex"
 
 
 module.exports =
 module.exports =
 	parse: (data, callback = (error, parsed) ->) ->
 	parse: (data, callback = (error, parsed) ->) ->
-		if data.length > (Settings.max_doc_length or 2 * 1024 * 1024)
-			logger.error {head: data.slice(0,1024)}, "data too large to parse"
+		if data.length > Settings.maxUpdateSize
+			logger.error {head: data.slice(0,1024), length: data.length}, "data too large to parse"
 			return callback new Error("data too large to parse")
 			return callback new Error("data too large to parse")
 		try
 		try
 			parsed = JSON.parse(data)
 			parsed = JSON.parse(data)

+ 2 - 2
services/real-time/test/unit/coffee/SafeJsonParseTest.coffee

@@ -8,7 +8,7 @@ describe 'SafeJsonParse', ->
 	beforeEach ->
 	beforeEach ->
 		@SafeJsonParse = SandboxedModule.require modulePath, requires:
 		@SafeJsonParse = SandboxedModule.require modulePath, requires:
 			"settings-sharelatex": @Settings = {
 			"settings-sharelatex": @Settings = {
-				max_doc_length: 16 * 1024
+				maxUpdateSize: 16 * 1024
 			}
 			}
 			"logger-sharelatex": @logger = {error: sinon.stub()}
 			"logger-sharelatex": @logger = {error: sinon.stub()}
 
 
@@ -27,7 +27,7 @@ describe 'SafeJsonParse', ->
 			# we have a 2k overhead on top of max size
 			# we have a 2k overhead on top of max size
 			big_blob = Array(16*1024).join("A")
 			big_blob = Array(16*1024).join("A")
 			data = "{\"foo\": \"#{big_blob}\"}"
 			data = "{\"foo\": \"#{big_blob}\"}"
-			@Settings.max_doc_length = 2 * 1024
+			@Settings.maxUpdateSize = 2 * 1024
 			@SafeJsonParse.parse data, (error, parsed) =>
 			@SafeJsonParse.parse data, (error, parsed) =>
 				@logger.error.called.should.equal true
 				@logger.error.called.should.equal true
 				expect(error).to.exist
 				expect(error).to.exist