[HACKERS] parallel pg_dump causes assertion failure in HEAD

2014-03-05 Thread Tom Lane
$ pg_dump -F d -j 4 -f foo regression
pg_dump: [archiver (db)] query failed: pg_dump: [parallel archiver] query was: 
SET TRANSACTION SNAPSHOT '2130-1'
pg_dump: [archiver (db)] query failed: pg_dump: [archiver (db)] query failed: 
pg_dump: [archiver (db)] query failed: $

postmaster log shows:

TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
355)
LOG:  server process (PID 15069) was terminated by signal 6: Aborted
DETAIL:  Failed process was running: SET TRANSACTION SNAPSHOT '2130-1'
LOG:  terminating any other active server processes

That Assert appears to have been introduced by commit b89e1510.

regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] parallel pg_dump causes assertion failure in HEAD

2014-03-05 Thread Andres Freund
On 2014-03-05 12:07:43 -0500, Tom Lane wrote:
 $ pg_dump -F d -j 4 -f foo regression
 pg_dump: [archiver (db)] query failed: pg_dump: [parallel archiver] query 
 was: SET TRANSACTION SNAPSHOT '2130-1'
 pg_dump: [archiver (db)] query failed: pg_dump: [archiver (db)] query failed: 
 pg_dump: [archiver (db)] query failed: $
 
 postmaster log shows:
 
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c, Line: 
 355)
 LOG:  server process (PID 15069) was terminated by signal 6: Aborted
 DETAIL:  Failed process was running: SET TRANSACTION SNAPSHOT '2130-1'
 LOG:  terminating any other active server processes
 
 That Assert appears to have been introduced by commit b89e1510.

Will have a look in an hour or two.

Greetings,

Andres Freund

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


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] parallel pg_dump causes assertion failure in HEAD

2014-03-05 Thread Andres Freund
On March 5, 2014 6:07:43 PM CET, Tom Lane t...@sss.pgh.pa.us wrote:
$ pg_dump -F d -j 4 -f foo regression
pg_dump: [archiver (db)] query failed: pg_dump: [parallel archiver]
query was: SET TRANSACTION SNAPSHOT '2130-1'
pg_dump: [archiver (db)] query failed: pg_dump: [archiver (db)] query
failed: pg_dump: [archiver (db)] query failed: $

postmaster log shows:

TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
Line: 355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
Line: 355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
Line: 355)
TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
Line: 355)
LOG:  server process (PID 15069) was terminated by signal 6: Aborted
DETAIL:  Failed process was running: SET TRANSACTION SNAPSHOT
'2130-1'
LOG:  terminating any other active server processes

That Assert appears to have been introduced by commit b89e1510.

It's a typo. It should make sure there is *no* historical snapshot. Will later 
test if it really works, but I'd be surprised if not.

Andres

-- 
Please excuse brevity and formatting - I am writing this on my mobile phone.

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


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] parallel pg_dump causes assertion failure in HEAD

2014-03-05 Thread Andres Freund
On 2014-03-05 18:39:52 +0100, Andres Freund wrote:
 On March 5, 2014 6:07:43 PM CET, Tom Lane t...@sss.pgh.pa.us wrote:
 $ pg_dump -F d -j 4 -f foo regression
 pg_dump: [archiver (db)] query failed: pg_dump: [parallel archiver]
 query was: SET TRANSACTION SNAPSHOT '2130-1'
 pg_dump: [archiver (db)] query failed: pg_dump: [archiver (db)] query
 failed: pg_dump: [archiver (db)] query failed: $
 
 postmaster log shows:
 
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
 Line: 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
 Line: 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
 Line: 355)
 TRAP: FailedAssertion(!(HistoricSnapshotActive()), File: snapmgr.c,
 Line: 355)
 LOG:  server process (PID 15069) was terminated by signal 6: Aborted
 DETAIL:  Failed process was running: SET TRANSACTION SNAPSHOT
 '2130-1'
 LOG:  terminating any other active server processes
 
 That Assert appears to have been introduced by commit b89e1510.
 
 It's a typo. It should make sure there is *no* historical
 snapshot. Will later test if it really works, but I'd be surprised if
 not.

So, after crashing my laptop by doing pg_dump -j16 on a cluster with 4GB
of shared_buffers (causing 16 parallel coredumps to be written) I can
confirm that indeed that the reason is just a typo in an assert.

Patch fixing that attached, it also includes a fix for a comment in a
related checks for historical snapshots.

Greetings,

Andres Freund

-- 
 Andres Freund http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training  Services
From 20da7e70cf5bc3c4dc943e71ec77f53ecc5f785a Mon Sep 17 00:00:00 2001
From: Andres Freund and...@anarazel.de
Date: Wed, 5 Mar 2014 21:20:56 +0100
Subject: [PATCH] Fix typo in Assert() statement causing
 SetTransactionSnapshot() to fail.

Also fix comment that hasn't got the message about removing the need
for temporarily suspending historical snapshots.
---
 src/backend/utils/time/snapmgr.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 4146527..9802fa7 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -261,9 +261,11 @@ Snapshot
 GetCatalogSnapshot(Oid relid)
 {
 	/*
-	 * Return historic snapshot if we're doing logical decoding, but
-	 * return a non-historic, snapshot if we temporarily are doing up2date
-	 * lookups.
+	 * Return historic snapshot while we're doing logical decoding, so we can
+	 * see the appropriate state of the catalog.
+	 *
+	 * This is the primary reason for needing to reset the system caches after
+	 * finishing decoding.
 	 */
 	if (HistoricSnapshotActive())
 		return HistoricSnapshot;
@@ -352,7 +354,7 @@ SetTransactionSnapshot(Snapshot sourcesnap, TransactionId sourcexid)
 
 	Assert(RegisteredSnapshots == 0);
 	Assert(FirstXactSnapshot == NULL);
-	Assert(HistoricSnapshotActive());
+	Assert(!HistoricSnapshotActive());
 
 	/*
 	 * Even though we are not going to use the snapshot it computes, we must
-- 
1.8.3.251.g1462b67


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers