Graceful job queue shutdown
authorChocobozzz <me@florianbigard.com>
Mon, 30 Jul 2018 16:49:54 +0000 (18:49 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 30 Jul 2018 16:49:54 +0000 (18:49 +0200)
server.ts
server/lib/job-queue/job-queue.ts

index efbfd3c9747a54162e6830ae6c5730ad8178eaea..0e6f787a68a11ca788c9ae9bdd82b17d322235df 100644 (file)
--- a/server.ts
+++ b/server.ts
@@ -195,4 +195,10 @@ async function startApplication () {
     logger.info('Server listening on %s:%d', hostname, port)
     logger.info('Web server: %s', CONFIG.WEBSERVER.URL)
   })
+
+  process.on('exit', () => {
+    JobQueue.Instance.terminate()
+  })
+
+  process.on('SIGINT', () => process.exit(0))
 }
index b018d0e8a6291a6278a947fc53b659071d899977..157c57ba993f14514edf6b7f9c3dfaf6586e4b0b 100644 (file)
@@ -83,6 +83,13 @@ class JobQueue {
     }
   }
 
+  terminate () {
+    for (const queueName of Object.keys(this.queues)) {
+      const queue = this.queues[queueName]
+      queue.close()
+    }
+  }
+
   createJob (obj: CreateJobArgument) {
     const queue = this.queues[obj.type]
     if (queue === undefined) {