+ if (log_checkpoints && n > 0) + ereport(LOG, + (errmsg("%u two-phase state files were written " + "for long-running prepared transactions", + n))); This would be better as an independent change. That looks useful for debugging, and I guess that's why you added it.
The typical case is that no LOG message would be written at all, since that only happens minutes after a prepared transaction is created and then not terminated. Restarting a transaction manager likely won't take that long, so it implies a crash or emergency shutdown of the transaction manager.
I think it is sensible and useful to be notified of this as a condition the operator would wish to know about. The message doesn't recur every checkpoint, it occurs only once at the point the files are created, so its not log spam either.
--
Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services