Re: hot_standby_feedback vs excludeVacuum and snapshots

From: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
To: Noah Misch <noah(at)leadboat(dot)com>
Cc: Simon Riggs <simon(at)2ndquadrant(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Greg Stark <stark(at)mit(dot)edu>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: hot_standby_feedback vs excludeVacuum and snapshots
Date: 2018-07-06 02:30:46
Message-ID: CAEepm=1bE4v93cSH2ZQXYkWKhTnuq6G14QaKcL=b3YwzN6nkOA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Jul 5, 2018 at 8:27 AM, Noah Misch <noah(at)leadboat(dot)com> wrote:
>> However, 49bff5300d527 also introduced a similar bug where subtransaction
>> commit would fail to release an AccessExclusiveLock, leaving the lock to
>> be removed sometimes early and sometimes late. This commit fixes
>> that bug also. Backpatch to PG10 needed.
>
> Subtransaction commit is too early to release an arbitrary
> AccessExclusiveLock. The primary releases every AccessExclusiveLock at
> top-level transaction commit, top-level transaction abort, or subtransaction
> abort. CommitSubTransaction() doesn't do that; it transfers locks to the
> parent sub(xact). Standby nodes can't safely remove an arbitrary lock earlier
> than the primary would.

But we don't release locks acquired by committing subxacts until the
top level xact commits. Perhaps that's what the git commit message
meant by "early", as opposed to "late" meaning when
StandbyReleaseOldLocks() next runs because an XLOG_RUNNING_XACTS
record is replayed?

--
Thomas Munro
http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Etsuro Fujita 2018-07-06 03:40:08 Re: Expression errors with "FOR UPDATE" and postgres_fdw with partition wise join enabled.
Previous Message Amit Langote 2018-07-06 02:00:21 Re: documentation about explicit locking