ソースを参照

WIP: auto-retry web requests

Shane Kilkelly 9 年 前
親
コミット
0d46c3e2b3

+ 3 - 1
services/document-updater/app/coffee/PersistenceManager.coffee

@@ -1,4 +1,4 @@
-request = require "request"
+request = require "requestretry"
 Settings = require "settings-sharelatex"
 Errors = require "./Errors"
 Metrics = require "./Metrics"
@@ -28,6 +28,7 @@ module.exports = PersistenceManager =
 				sendImmediately: true
 			jar: false
 			timeout: MAX_HTTP_REQUEST_LENGTH
+			maxAttempts: 2  # for requestretry
 		}, (error, res, body) ->
 			return callback(error) if error?
 			if res.statusCode >= 200 and res.statusCode < 300
@@ -65,6 +66,7 @@ module.exports = PersistenceManager =
 				sendImmediately: true
 			jar: false
 			timeout: MAX_HTTP_REQUEST_LENGTH
+			maxAttempts: 2  # for requestretry
 		}, (error, res, body) ->
 			return callback(error) if error?
 			if res.statusCode >= 200 and res.statusCode < 300

+ 1 - 0
services/document-updater/package.json

@@ -16,6 +16,7 @@
     "metrics-sharelatex": "git+https://github.com/sharelatex/metrics-sharelatex.git#v1.5.0",
     "redis-sharelatex": "git+https://github.com/sharelatex/redis-sharelatex.git#v1.0.3",
     "request": "2.25.0",
+    "requestretry": "^1.12.0",
     "sandboxed-module": "~0.2.0",
     "settings-sharelatex": "git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0",
     "sinon": "~1.5.2",

+ 3 - 1
services/document-updater/test/unit/coffee/PersistenceManager/PersistenceManagerTests.coffee

@@ -8,7 +8,7 @@ Errors = require "../../../../app/js/Errors"
 describe "PersistenceManager", ->
 	beforeEach ->
 		@PersistenceManager = SandboxedModule.require modulePath, requires:
-			"request": @request = sinon.stub()
+			"requestretry": @request = sinon.stub()
 			"settings-sharelatex": @Settings = {}
 			"./Metrics": @Metrics =
 				Timer: class Timer
@@ -50,6 +50,7 @@ describe "PersistenceManager", ->
 							sendImmediately: true
 						jar: false
 						timeout: 5000
+						maxAttempts: 2
 					})
 					.should.equal true
 
@@ -129,6 +130,7 @@ describe "PersistenceManager", ->
 							sendImmediately: true
 						jar: false
 						timeout: 5000
+						maxAttempts: 2
 					})
 					.should.equal true