Thread: New hooks for snapshot and transaction ID acquisition from external source

New hooks for snapshot and transaction ID acquisition from external source

From
Michael Paquier
Date:
Hi,<br /><br />What do you think about adding hooks for transaction ID and snapshot acquisition? Those hooks could be
locatedin AssignTransactionId:xact.c for transaction ID and GetTransactionSnapshot:snapmgr.c for snapshots.<br /> This
isuseful for multi-master applications that use external tools to feed with unique transaction IDs and global snapshots
allthe nodes of a cluster in order to maintain global data consistency and visibility, one of the examples being
clusterapplications like Postgres-XC.<br /><br clear="all" />Opinions?<br />-- <br />Michael<br /> 
Michael Paquier <michael.paquier@gmail.com> writes:
> What do you think about adding hooks for transaction ID and snapshot
> acquisition?

Not much.  Those places are not only hot spots but remarkably delicate.
It's hard to see much that a plugin could do there that wouldn't be
pretty deleterious to both performance and reliability.  As an example,
throwing an error in either place is dangerous, and taking any locks
they don't already take even more so.

Now of course, if your plugin breaks your database that's maybe not my
problem, but I'm concerned that even just adding a test to see if
there's a hook to call could result in measurable slowdown.
        regards, tom lane