Re: logical decoding - reading a user catalog table

From: Andres Freund <andres(at)2ndquadrant(dot)com>
To: Steve Singer <steve(at)ssinger(dot)info>, Kevin Grittner <kgrittn(at)ymail(dot)com>
Cc: PostgreSQL-development Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: logical decoding - reading a user catalog table
Date: 2014-11-17 16:34:46
Message-ID: 20141117163446.GI27042@awork2.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

Kevin: CCed you, because it doesn't really look like a logical decoding
related issue.

On 2014-11-17 11:25:40 -0500, Steve Singer wrote:
> On 11/17/2014 10:37 AM, Andres Freund wrote:
> >On 2014-11-13 22:23:02 -0500, Steve Singer wrote:
> >
> >
> >Also since updating (to 2c267e47afa4f9a7c) I've seen a assertion failure in
> >a normal client connection, not the walsender
> >
> >#3 0x00000000006b4978 in GetSerializableTransactionSnapshotInt (
> > snapshot=snapshot(at)entry=0xbfa8a0 <CurrentSnapshotData>,
> > sourcexid=sourcexid(at)entry=0) at predicate.c:1738
> >#4 0x00000000006b66c3 in GetSafeSnapshot (origSnapshot=<optimized out>)
> > at predicate.c:1517
> >#5 GetSerializableTransactionSnapshot (
> > snapshot=0xbfa8a0 <CurrentSnapshotData>) at predicate.c:1598
> >#6 0x00000000007d16dd in GetTransactionSnapshot () at snapmgr.c:200
> >#7 0x00000000006c0e35 in exec_simple_query (
> > query_string=0x1fd01b8 "select ev_origin, ev_seqno, ev_timestamp,
> >ev_snapshot, \"pg_catalog\".txid_snapshot_xmin(ev_snapshot),
> >\"pg_catalog\".txid_snapshot_xmax(ev_snapshot),
> >coalesce(ev_provider_xid,\""...)
> > at postgres.c:959
> >#8 PostgresMain (argc=<optimized out>, argv=argv(at)entry=0x1f5ab50,
> >
> >
> >I have no idea if this has anything to do with your recent changes or some
> >other change. I haven't so far been able to replicate that since the first
> >time I saw it.
> >That crash is decidedly odd. Any chance you still have the full
> >backtrace around?
>
> Yes I still have the core file

Cool, could you show the full thing? Or did you just snip it because
it's just the Assert/ExceptionalCondition thing?

Could you print *snapshot in frame #3?

> >
> >This is in the SSI code... I'm not immediately seeing how this could be
> >related to logical decoding. It can't even be a imported snapshot,
> >because the exported snapshot is marked repeatable read.
> >
> >Are you actually using serializable transactions? If so, how and why?
>
> Yes, the test client that performs the 'simulated workload' does some
> serializable transactions. It connects as a normal client via JDBC and does
> a prepareStatement("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE") and then
> does some DML. Why? because it seemed like a good thing to include in the
> test suite.

Yes, it's a good reason as the above backtrace proves ;). I'm just
trying to understand uner which circumstances it happens.

The above backtrace looks like it can only be triggered if you do a
BEGIN TRANSACTION SERIALIZABLE DEFERRABLE READ ONLY; Is that something
you do?

> Your right this might have nothing to do with logical decoding. I haven't
> been able to reproduce again either, I can't even say
> if this problem was introduced to 9.4 in the past month or if it has been
> around much longer and I just haven't hit it before.

It's not hard to imagine that the safe/deferred snapshot code isn't all
that well exercised. I don't think many people use it yet.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Christoph Berg 2014-11-17 16:38:38 Re: [HACKERS] ltree::text not immutable?
Previous Message Steve Singer 2014-11-17 16:25:40 Re: logical decoding - reading a user catalog table