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

Merge pull request #13980 from overleaf/mj-web-compile-timeout

[web] Add timeout for compile requests to clsi

GitOrigin-RevId: 94d6de60eec1fc9e52971e14f38f2d4aef6b7f5d
Mathias Jakobsen 3 лет назад
Родитель
Сommit
c7006fabd4

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

@@ -29,6 +29,9 @@ const VALID_COMPILERS = ['pdflatex', 'latex', 'xelatex', 'lualatex']
 const OUTPUT_FILE_TIMEOUT_MS = 60000
 const CLSI_COOKIES_ENABLED = (Settings.clsiCookie?.key ?? '') !== ''
 
+// The timeout in services/clsi/app.js is 10 minutes, so we'll be on the safe side with 12 minutes
+const COMPILE_REQUEST_TIMEOUT_MS = 12 * 60 * 1000
+
 function collectMetricsOnBlgFiles(outputFiles) {
   let topLevel = 0
   let nested = 0
@@ -451,6 +454,7 @@ async function _postToClsi(
   const opts = {
     json: req,
     method: 'POST',
+    signal: AbortSignal.timeout(COMPILE_REQUEST_TIMEOUT_MS),
   }
   try {
     const { body, clsiServerId } = await _makeRequest(

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

@@ -222,6 +222,7 @@ describe('ClsiManager', function () {
               'Content-Type': 'application/json',
               Cookie: `${this.clsiCookieKey}=${this.clsiServerId}`,
             },
+            signal: sinon.match.instanceOf(AbortSignal),
           }
         )
       })
@@ -426,6 +427,7 @@ describe('ClsiManager', function () {
               'Content-Type': 'application/json',
               Cookie: `${this.clsiCookieKey}=${this.clsiServerId}`,
             },
+            signal: sinon.match.instanceOf(AbortSignal),
           }
         )
       })
@@ -829,6 +831,7 @@ describe('ClsiManager', function () {
               'Content-Type': 'application/json',
               Cookie: `${this.clsiCookieKey}=${this.clsiServerId}`,
             },
+            signal: sinon.match.instanceOf(AbortSignal),
           }
         )
       })