Hiroshi Inoue <[EMAIL PROTECTED]> writes: > But is it 2-phase commit protocol in the first place ?
> That is, in your exmaple below > Example: > Master Slave > ------ ----- > commit ready--> > <--OK > commit done->XX > is the "commit done" message needed ? Absolutely --- otherwise, we'd not be having this whole discussion. The problem is that the slave is holding ready to commit but doesn't know whether he should or not ... or alternatively, he did commit but the master didn't get the acknowledgement. It's not that big a deal for the master to remember past committed transactions until it knows all slaves have acknowledged committing them; you only need a bit or so per transaction. It's a much bigger deal if the slave has to hold the transaction ready-to-commit for a long time. That transaction is holding locks, and also the sheer volume of log data is way bigger. (For comparison, we recycle pg_xlog details about a transaction much sooner than we recycle pg_clog.) I think you really want some way for the slave to decide it can time out and abort the transaction after all ... but I don't see how you do that without breaking the 2PC protocol. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])