pgpool2.git / summary / log / commit / refs

commit    d339cf86055b0cedaff2ab043ca474579660541f
Author:   Tatsuo Ishii <ishii@sraoss.co.jp>
Date:     Thu Oct 03 12:33:09 2019 +0000

    Fix signal unblock leak in failover.
    
    When failover event occurs, register_node_operation_request() gets
    called to en-queue failover/failback requests. If the request queue is
    full, this function returns false with unlocking semaphore. But it
    forgot to unblock signal mask. This leads to block all signals
    including SITERM, which makes pgpool fail to shutdown.
    
    Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2019-October/003449.html


src/main/pgpool_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/pgpool_main.c b/src/main/pgpool_main.c index fb647dbbd..8bfcfbc9c 100644 --- a/src/main/pgpool_main.c +++ b/src/main/pgpool_main.c @@ -537,6 +537,7 @@ register_node_operation_request(POOL_REQUEST_KIND kind, int *node_id_set, int co if ((Req_info->request_queue_tail - MAX_REQUEST_QUEUE_SIZE) == Req_info->request_queue_head) { pool_semaphore_unlock(REQUEST_INFO_SEM); + POOL_SETMASK(&oldmask); return false; } Req_info->request_queue_tail++; [parent: 362bddd9c09e]