Răsfoiți Sursa

[filestore] Replace `delayShutdownMs` by `gracefulShutdownDelayInMs` (#22077)

* Add a default 30s timeout for `delayShutdownMs`

`settings.delayShutdownMs` doesn't seem to be defined anywhere

Logs typically often this pair of entries:
```
INFO 2024-11-21T15:51:42.115Z [resource.labels.containerName: filestore] received interrupt, cleaning up
INFO 2024-11-21T15:51:42.120Z [resource.labels.containerName: filestore] shutdown timed out, exiting
```
This indicates that there is no delay between the interrupt signal and the shutdown. The 100ms delay also doesn't happen. We believe that the `server.close` callback is called after `server.closeAllConnections()`, and the `server closed` log is usually lost because of the process exiting immediately.

See: https://cloudlogging.app.goo.gl/WJQ6mc3gWwotVQya7

* Add timeout before exiting

* Replace `delayShutdownMs` by `gracefulShutdownDelayInMs`.

Looks like the error came from a wrong merge in https://github.com/overleaf/internal/pull/18756

We don't want a default 30s timeout for the shutdown, per https://github.com/overleaf/internal/pull/16888

GitOrigin-RevId: c1bdc8986f78a6e18e8b8b1fe60b33aa6ffef909
Antoine Clausse 1 an în urmă
părinte
comite
2b1df12052
1 a modificat fișierele cu 5 adăugiri și 2 ștergeri
  1. 5 2
      services/filestore/app.js

+ 5 - 2
services/filestore/app.js

@@ -166,7 +166,10 @@ function handleShutdownSignal(signal) {
   // stop accepting new connections, the callback is called when existing connections have finished
   server.close(() => {
     logger.info({ signal }, 'server closed')
-    process.exit()
+    // exit after a short delay so logs can be flushed
+    setTimeout(() => {
+      process.exit()
+    }, 100)
   })
   // close idle http keep-alive connections
   server.closeIdleConnections()
@@ -178,7 +181,7 @@ function handleShutdownSignal(signal) {
     setTimeout(() => {
       process.exit()
     }, 100)
-  }, settings.delayShutdownMs)
+  }, settings.gracefulShutdownDelayInMs)
 }
 
 process.on('SIGTERM', handleShutdownSignal)