Sfoglia il codice sorgente

Merge pull request #4261 from overleaf/jpa-fake-timed-out-response

[ClsiManager] respond w/ status=timedout for timed out compile requests

GitOrigin-RevId: 2937355bfd8d58870509ab40c2ba19f014f82a37
Jakob Ackermann 5 anni fa
parent
commit
e57be19ee3

+ 3 - 0
services/web/app/src/Features/Compile/ClsiManager.js

@@ -472,6 +472,9 @@ const ClsiManager = {
     }
     ClsiManager._makeRequest(projectId, opts, (err, response, body) => {
       if (err != null) {
+        if (err.code === 'ESOCKETTIMEDOUT') {
+          return callback(null, { compile: { status: 'timedout' } })
+        }
         return callback(
           new OError('failed to make request to CLSI', {
             projectId,

+ 21 - 0
services/web/test/unit/src/Compile/ClsiManagerTests.js

@@ -974,6 +974,27 @@ describe('ClsiManager', function () {
         this.callback.should.have.been.calledWith(sinon.match.instanceOf(Error))
       })
     })
+
+    describe('when the CLSI request times out', function () {
+      beforeEach(function () {
+        this.ClsiManager._makeRequest = sinon
+          .stub()
+          .callsArgWith(2, { code: 'ESOCKETTIMEDOUT' }, null, null)
+        this.ClsiManager._postToClsi(
+          this.project_id,
+          this.user_id,
+          this.req,
+          'standard',
+          this.callback
+        )
+      })
+
+      it('should call the callback with a timed out response', function () {
+        this.callback.should.have.been.calledWith(null, {
+          compile: { status: 'timedout' },
+        })
+      })
+    })
   })
 
   describe('wordCount', function () {