Skip to content

Commit 492a22f

Browse files
committed
feat: timeout logic after forced shutdown triggers
1 parent e1d7a8b commit 492a22f

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

server.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import 'dotenv/config';
22
import http from 'http';
33
import app from './src/app.js';
4-
import connectDB from './src/config/db.js';
5-
4+
import { connectDB, closeDB } from './src/config/db.js';
65
const PORT = process.env.PORT || 5000;
76
const NODE_ENV = process.env.NODE_ENV || 'development';
87

@@ -34,10 +33,17 @@ const startServer = async() => {
3433

3534
startServer();
3635

36+
let isShuttingDown = false;
37+
3738
const shutdownGracefully = (exitCode = 0) => {
39+
40+
if(isShuttingDown) return;
41+
isShuttingDown = true;
42+
3843
if (server) {
39-
server.close(() => {
40-
console.log("Server closed gracefully");
44+
server.close(async () => {
45+
await closeDB();
46+
console.log("Server and DB closed gracefully");
4147
process.exit(exitCode);
4248
});
4349

src/config/db.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,10 @@ const connectDB = async () => {
1010
}
1111
};
1212

13-
export default connectDB;
13+
const closeDB = async () => {
14+
await mongoose.connection.close(false);
15+
}
16+
export {
17+
connectDB,
18+
closeDB
19+
};

0 commit comments

Comments
 (0)