BUG #13128: Postgres deadlock on startup failure when max_prepared_transactions is not sufficiently high. - Mailing list pgsql-bugs

From grant@amazon.com
Subject BUG #13128: Postgres deadlock on startup failure when max_prepared_transactions is not sufficiently high.
Date
Msg-id 20150422220940.5216.95902@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #13128: Postgres deadlock on startup failure when max_prepared_transactions is not sufficiently high.  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13128
Logged by:          Grant McAlister
Email address:      grant@amazon.com
PostgreSQL version: 9.3.6
Operating system:   Linux 64bit
Description:

Steps to reproduce

1.       Set max_prepared_transactions to 2 in postgresql.conf.
2.       start Postgres.
3.       Create two uncommitted prepared transactions: BEGIN; PREPARE
TRANSACTION ‘test1’; BEGIN; PREPARE TRANSACTION ‘test2’;
4.       Set max_prepared_transactions to 1 in postgresql.conf.
5.       Restart Postgres again.

At this point the startup will fail with a fatal but the postmaster process
keeps running.

LOG:  database system was interrupted; last known up at 2015-04-16 17:19:56
PDT
LOG:  database system was not properly shut down; automatic recovery in
progress
LOG:  record with zero length at 0/1826C70
LOG:  redo is not required
LOG:  recovering prepared transaction 1685
LOG:  recovering prepared transaction 1683
FATAL:  maximum number of prepared transactions reached
HINT:  Increase max_prepared_transactions (currently 1).

Looks like their may be a LWLock that is not correctly getting released
which causes the process to hang rather then exit.

pgsql-bugs by date:

Previous
From: stejsky@volny.cz
Date:
Subject: BUG #13125: text bug
Next
From: Michael Paquier
Date:
Subject: Re: BUG #13128: Postgres deadlock on startup failure when max_prepared_transactions is not sufficiently high.