From e5d420b2db9e4abfe5e5edfe12a38a08d78d214a Mon Sep 17 00:00:00 2001 From: Remco Bloemen Date: Mon, 7 Mar 2016 10:57:20 +0100 Subject: [PATCH] Gracefull exit on sigTERM Like the sigINT that was already handled, postgrest should gracefuly shut down on a sigTERM. This is a common way of stopping processes, used amongst others by docker. See: https://stackoverflow.com/questions/4042201/how-does-sigint-relate-to-the-other-termination-signals --- CHANGELOG.md | 1 + src/PostgREST/Main.hs | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24b704c2b..60ca2bf52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased ### Fixed +- Terminate gracefully on SIGTERM - @recmo ## [0.3.1.0] - 2016-02-28 diff --git a/src/PostgREST/Main.hs b/src/PostgREST/Main.hs index f7a09fefc..68d3a12c1 100644 --- a/src/PostgREST/Main.hs +++ b/src/PostgREST/Main.hs @@ -60,10 +60,11 @@ main = do #ifndef mingw32_HOST_OS tid <- myThreadId - void $ installHandler keyboardSignal (Catch $ do - P.release pool - throwTo tid UserInterrupt - ) Nothing + forM_ [sigINT, sigTERM] $ \sig -> + void $ installHandler sig (Catch $ do + P.release pool + throwTo tid UserInterrupt + ) Nothing #endif result <- P.use pool $ do