Skip to content

Commit c24353c

Browse files
authored
feat: add graceful shutdown procedures upon SIGTERM (#923)
1 parent 4855e1d commit c24353c

40 files changed

+147
-141
lines changed

packages/analytics/bin/worker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,11 @@ void container.load().then((container) => {
2222

2323
const subscriber = container.get<DomainEventSubscriberInterface>(TYPES.DomainEventSubscriber)
2424

25+
process.on('SIGTERM', () => {
26+
logger.info('SIGTERM received. Stopping worker...')
27+
subscriber.stop()
28+
logger.info('Worker stopped.')
29+
})
30+
2531
subscriber.start()
2632
})

packages/analytics/docker/entrypoint.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ COMMAND=$1 && shift 1
66
case "$COMMAND" in
77
'start-worker' )
88
echo "[Docker] Starting Worker..."
9-
node docker/entrypoint-worker.js
9+
exec node docker/entrypoint-worker.js
1010
;;
1111

1212
'report' )
1313
echo "[Docker] Starting Usage Report Generation..."
14-
node docker/entrypoint-report.js
14+
exec node docker/entrypoint-report.js
1515
;;
1616

1717
* )

packages/api-gateway/bin/server.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,12 @@ void container.load().then((container) => {
108108

109109
serverInstance.keepAliveTimeout = keepAliveTimeout
110110

111+
process.on('SIGTERM', () => {
112+
logger.info('SIGTERM signal received: closing HTTP server')
113+
serverInstance.close(() => {
114+
logger.info('HTTP server closed')
115+
})
116+
})
117+
111118
logger.info(`Server started on port ${process.env.PORT}`)
112119
})

packages/api-gateway/docker/entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ COMMAND=$1 && shift 1
66
case "$COMMAND" in
77
'start-web' )
88
echo "Starting Web..."
9-
node docker/entrypoint-server.js
9+
exec node docker/entrypoint-server.js
1010
;;
1111

1212
* )

packages/api-gateway/supervisor/supervisor-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ sh supervisor/wait-for.sh localhost $AUTH_SERVER_PORT
66
sh supervisor/wait-for.sh localhost $FILES_SERVER_PORT
77
sh supervisor/wait-for.sh localhost $REVISIONS_SERVER_PORT
88
sh supervisor/wait-for.sh localhost $SYNCING_SERVER_PORT
9-
node docker/entrypoint-server.js
9+
exec node docker/entrypoint-server.js

packages/auth/bin/server.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,14 @@ void container.load().then((container) => {
6464
})
6565
})
6666

67-
const serverInstance = server.build()
67+
const serverInstance = server.build().listen(env.get('PORT'))
6868

69-
serverInstance.listen(env.get('PORT'))
69+
process.on('SIGTERM', () => {
70+
logger.info('SIGTERM signal received: closing HTTP server')
71+
serverInstance.close(() => {
72+
logger.info('HTTP server closed')
73+
})
74+
})
7075

7176
logger.info(`Server started on port ${process.env.PORT}`)
7277
})

packages/auth/bin/worker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,11 @@ void container.load().then((container) => {
2222

2323
const subscriber = container.get<DomainEventSubscriberInterface>(TYPES.Auth_DomainEventSubscriber)
2424

25+
process.on('SIGTERM', () => {
26+
logger.info('SIGTERM received. Stopping worker...')
27+
subscriber.stop()
28+
logger.info('Worker stopped.')
29+
})
30+
2531
subscriber.start()
2632
})

packages/auth/docker/entrypoint.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,45 @@ COMMAND=$1 && shift 1
66
case "$COMMAND" in
77
'start-web' )
88
echo "[Docker] Starting Web..."
9-
node docker/entrypoint-server.js
9+
exec node docker/entrypoint-server.js
1010
;;
1111

1212
'start-worker' )
1313
echo "[Docker] Starting Worker..."
14-
node docker/entrypoint-worker.js
14+
exec node docker/entrypoint-worker.js
1515
;;
1616

1717
'cleanup' )
1818
echo "[Docker] Starting Cleanup..."
19-
node docker/entrypoint-cleanup.js
19+
exec node docker/entrypoint-cleanup.js
2020
;;
2121

2222
'stats' )
2323
echo "[Docker] Starting Persisting Stats..."
24-
node docker/entrypoint-stats.js
24+
exec node docker/entrypoint-stats.js
2525
;;
2626

2727
'email-daily-backup' )
2828
echo "[Docker] Starting Email Daily Backup..."
29-
node docker/entrypoint-backup.js daily
29+
exec node docker/entrypoint-backup.js daily
3030
;;
3131

3232
'email-weekly-backup' )
3333
echo "[Docker] Starting Email Weekly Backup..."
34-
node docker/entrypoint-backup.js weekly
34+
exec node docker/entrypoint-backup.js weekly
3535
;;
3636

3737
'email-backup' )
3838
echo "[Docker] Starting Email Backup For Single User..."
3939
EMAIL=$1 && shift 1
40-
node docker/entrypoint-user-email-backup.js $EMAIL
40+
exec node docker/entrypoint-user-email-backup.js $EMAIL
4141
;;
4242

4343
'delete-accounts' )
4444
echo "[Docker] Starting Accounts Deleting from CSV..."
4545
FILE_NAME=$1 && shift 1
4646
MODE=$1 && shift 1
47-
node docker/entrypoint-delete-accounts.js $FILE_NAME $MODE
47+
exec node docker/entrypoint-delete-accounts.js $FILE_NAME $MODE
4848
;;
4949

5050
* )

packages/auth/supervisor/supervisor-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
set -euo pipefail
44

55
sh supervisor/wait-for.sh localhost $SYNCING_SERVER_PORT
6-
node docker/entrypoint-server.js
6+
exec node docker/entrypoint-server.js

packages/auth/supervisor/supervisor-worker.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
set -euo pipefail
44

55
sh supervisor/wait-for.sh localhost $AUTH_SERVER_PORT
6-
node docker/entrypoint-worker.js
6+
exec node docker/entrypoint-worker.js

0 commit comments

Comments
 (0)