BUG #13667: SSI violation...

Sean Chittenden <sean@chittenden.org>

From: sean@chittenden.org
To: pgsql-bugs@postgresql.org
Date: 2015-10-08T10:00:36Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13667
Logged by:          Sean Chittenden
Email address:      sean@chittenden.org
PostgreSQL version: 9.4.4
Operating system:   Linux/FreeBSD
Description:        

A few weeks back I was pointed in the direction of a bug that appears to be
an SSI violation.  The repro case below is written using bash and psql.

In a tight loop, we would expect 50% of these transactions to fail. 
Instead, periodically we're seeing both transaction commit successfully. 
The concern is that PostgreSQL thinks these transactions are commutable or
the SIREAD lock isn't erected correctly.

https://github.com/gfredericks/pg-serializability-bug

The two concurrent transactions required to tickle this bug are:

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO things (id) VALUES ('A');
SELECT id FROM things;
COMMIT;

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO things (id) VALUES ('B');
SELECT id FROM things;
COMMIT;

Cheers.  -sc