Re: BUG #5918: SummarizeOldestCommittedSxact assertion failure

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: YAMAMOTO Takashi <yamt(at)mwd(dot)biglobe(dot)ne(dot)jp>
Cc: pgsql-bugs(at)postgresql(dot)org, Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>, Dan Ports <drkp(at)csail(dot)mit(dot)edu>
Subject: Re: BUG #5918: SummarizeOldestCommittedSxact assertion failure
Date: 2011-03-08 11:22:20
Message-ID: 4D76116C.5050506@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 08.03.2011 02:37, YAMAMOTO Takashi wrote:
>
> The following bug has been logged online:
>
> Bug reference: 5918
> Logged by: YAMAMOTO Takashi
> Email address: yamt(at)mwd(dot)biglobe(dot)ne(dot)jp
> PostgreSQL version: 9.1devel
> Operating system: NetBSD
> Description: SummarizeOldestCommittedSxact assertion failure
> Details:
>
> running 05d93c38a791836eeceaf8edb0ea8cb19cdf2760 with my patch
> in BUG #5915 applied, i got the following assertion failure.
> given that availableList is not empty and SxactGlobalXminCount == 0,
> i guess it was raced with ReleasePredicateLocks.

Yeah, that's what it looks like. One backend calls
RegisterSerializableTransaction() while all the serializablexact slots
are in use. So it releases SerializableXactHashLock and calls
SummarizeOldestCommittedSxact(). Before SummarizeOldestCommittedSxact()
acquires SerializableFinishedListLock, another backend calls
ReleasePredicateLocks(false), triggering cleanup of old predicate locks,
and ClearOldPredicateLocks() clears all old locks. Now when
SummarizeOldestCommittedSxact() finally gets the lock, it sees that
there are no old transactions to summarize, and trips the assertion.

I think we need to just treat an empty list as normal in
SummarizeOldestcommittedSxact(), patch attached.

Thanks for yet another excellent bug report!

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

Attachment Content-Type Size
empty-list-is-ok-in-summarize.patch text/x-diff 1.2 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Torsten Zühlsdorff 2011-03-08 13:08:56 Re: Missing Bug-Report #5904?
Previous Message Heikki Linnakangas 2011-03-08 10:23:47 Re: BUG #5915: OldSerXidAdd inflates pg_serial too much