On 1 April 2018 at 00:57, Andres Freund <and...@anarazel.de> wrote: > 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. OK. So it'd be a nice-to-have, but not vital. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services