Обсуждение: pgsql-server/src/backend commands/async.c tcop ...

Поиск
Список
Период
Сортировка

pgsql-server/src/backend commands/async.c tcop ...

От
tgl@postgresql.org (Tom Lane)
Дата:
CVSROOT:    /cvsroot
Module name:    pgsql-server
Changes by:    tgl@postgresql.org    02/09/15 21:24:41

Modified files:
    src/backend/commands: async.c
    src/backend/tcop: postgres.c

Log message:
    Fix for rare race-condition-like failure: if a backend receives SIGUSR2
    (notify/SI-overrun interrupt) while it is in process of doing proc_exit,
    it is possible for Async_NotifyHandler() to try to start a transaction
    when one is already running.  This leads to Asserts() or worse.  I think
    it may only be possible to occur when frontend synchronization is lost
    (ie, the elog(FATAL) in SocketBackend() fires), but that is a standard
    occurrence after error during COPY.  In any case, I have seen this
    failure occur during regression tests, so it is definitely possible.