|From:||Andres Freund <andres(at)anarazel(dot)de>|
|To:||Craig Ringer <craig(at)2ndquadrant(dot)com>|
|Cc:||Vladimir Gordiychuk <folyga(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Álvaro Herrera <alvherre(at)2ndquadrant(dot)com>|
|Subject:||Re: Stopping logical replication protocol|
|Views:||Raw Message | Whole Thread | Download mbox|
On 2016-09-23 13:01:27 +0800, Craig Ringer wrote:
> From f98f2388c57d938ebbe07ccd2dbe02138312858f Mon Sep 17 00:00:00 2001
> From: Vladimir Gordiychuk <folyga(at)gmail(dot)com>
> Date: Wed, 7 Sep 2016 00:39:18 +0300
> Subject: [PATCH 2/4] Client-initiated CopyDone during transaction decoding in
> The prior patch caused the walsender to react to a client-initiated
> CopyDone while it's in the WalSndLoop. That's not enough to let clients
> end logical decoding mid-transaction because we loop in ReorderBufferCommit
> during decoding of a transaction without ever returning to WalSndLoop.
> Allow breaking out of ReorderBufferCommit by detecting that client
> input has requested an end to COPY BOTH mode, so clients can abort
> decoding mid-transaction.
Hm, I'm *VERY* doubtful about doing this via yet another callback. Why
don't we just error out in the prepare write callback?
I don't think it's a good idea to return a non-error state if a command
is interrupted in the middle. We might already have sent a partial
transaction or such. Also compare this to interrupting a query - we
don't just returning rows, we error out.
|Next Message||Thomas Munro||2016-10-04 21:30:48||Re: Dynamic shared memory areas|
|Previous Message||Michael Paquier||2016-10-04 21:07:34||Re: Tracking wait event for latches|