There have been several reports that people could not vacuum any more or
observed strange locks even after server restart. The reason was that they
still had uncommitted prepared transactions around.
I wonder if it could help to change the log level from
ereport(LOG,
(errmsg("recovering prepared transaction %u", xid)));
to WARNING maybe in order to make that message more striking within the
normal startup messages.
Joachim