From 928b5602de9201d15a6ce9597f9df8f0342783c5 Mon Sep 17 00:00:00 2001 From: Kishore Nallan Date: Wed, 7 Mar 2018 07:25:33 +0530 Subject: [PATCH] Handle SIGTERM and gracefully shut-down. --- TODO.md | 2 +- src/main/typesense_server.cpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 4437c18c..db07025b 100644 --- a/TODO.md +++ b/TODO.md @@ -95,7 +95,7 @@ - ~~Replica server should fail when pointed to "old" master~~ - ~~gzip compress responses~~ - ~~Have a LOG(ERROR) level~~ -- Handle SIGTERM which is sent when process is killed +- ~~Handle SIGTERM which is sent when process is killed~~ - Parameterize replica's MAX_UPDATES_TO_SEND - NOT operator support - > INT32_MAX validation for float field diff --git a/src/main/typesense_server.cpp b/src/main/typesense_server.cpp index 731e1bd1..8a2fcfb7 100644 --- a/src/main/typesense_server.cpp +++ b/src/main/typesense_server.cpp @@ -64,7 +64,12 @@ void replica_server_routes() { } int main(int argc, char **argv) { + // remove SIGTERM since we handle it on our own + g3::overrideSetupSignals({{SIGABRT, "SIGABRT"}, {SIGFPE, "SIGFPE"},{SIGILL, "SIGILL"}, {SIGSEGV, "SIGSEGV"},}); + + // we can install new signal handlers only after overriding above signal(SIGINT, catch_interrupt); + signal(SIGTERM, catch_interrupt); cmdline::parser options; options.add("data-dir", 'd', "Directory where data will be stored.", true);