On 2018-03-31 22:13:42 +0800, Craig Ringer wrote: > We'll still need a mechanism to transport them to downstreams (like WAL > messages) and to send responses upstream. For responses I think we will > finally want to add a backchannel to the logical replication protocol as > I've wanted for a long while: downstream can send a COPY message on COPY > BOTH proto back to upstream, which passes it to a callback on the output > plugin for the output plugin to act on.
Not necessarily? You can just send out the prepare, wait for all clients to ack it, and then commit/rollback prepared.
We then lack any mechanism by which you can NACK, saying "I can't apply this".
So upstream will wait indefinitely. I guess we just expect the user to intervene and ROLLBACK if they decide a replica isn't going to get the job done, or have checked the replica's logs and found it can't apply it for some hopefully-sane reason.
It's not like we'd auto-ROLLBACK PREPARED in response to a nack from a downstream anyway, so all we're missing is probably info in the upstream logs about which replica(s) cannot apply it and why.