Re: 9.1 causing "out of shared memory" error and higher serialization conflicts - Mailing list pgsql-general

From Randy Ficker
Subject Re: 9.1 causing "out of shared memory" error and higher serialization conflicts
Date
Msg-id 07ac01ccfe30$f50347e0$df09d7a0$@gmail.com
Whole thread Raw
In response to Re: 9.1 causing "out of shared memory" error and higher serialization conflicts  ("Francisco Figueiredo Jr." <francisco@npgsql.org>)
Responses Re: 9.1 causing "out of shared memory" error and higher serialization conflicts  ("Francisco Figueiredo Jr." <francisco@npgsql.org>)
List pgsql-general

After deploying a fixed version of Npgsql, the error frequency went straight back down to the 8.4 level.  Awesome!

 

Thanks for the quick replies guys!

 

From: francisco.figueiredo.jr@gmail.com [mailto:francisco.figueiredo.jr@gmail.com] On Behalf Of Francisco Figueiredo Jr.
Sent: Friday, March 09, 2012 10:36 AM
To: Randy Ficker
Cc: pgsql-general@postgresql.org; Marti Raudsepp
Subject: Re: [GENERAL] 9.1 causing "out of shared memory" error and higher serialization conflicts

 


Thanks for the heads up.

I'll fix that in Npgsql so it sends the correct isolation level when running on 9.1+

Sent from my Android phone

On Mar 9, 2012 3:27 PM, "Randy Ficker" <randyficker@gmail.com> wrote:

Hey Marti,

I almost replied that yes, I was 100% sure, since I know my code requests the REPEATABLE READ level.  However, I figured before I replied, I should double-check the SQL statements that were being sent to Postgres.

Then I found this gem in Npgsql:

           if (isolation == IsolationLevel.RepeatableRead || isolation == IsolationLevel.Serializable || isolation == IsolationLevel.Snapshot)
           {
               commandText.Append("SERIALIZABLE");
           }

*headslap*.  I know this code is fine for 8, but I still would not have expected this code to exist in the driver itself instead of just letting Postgres do the switch.  I guess Npgsql says right on their front page "Works with Postgresql 7.x and 8.x" so I shouldn't have assumed it'd behave correctly with 9.

So you're right, it turns out I was using SERIALIZABLE after all.  I'm going to fix this right away.  Thanks for the reply!

-----Original Message-----
From: Marti Raudsepp [mailto:marti@juffo.org]
Sent: Friday, March 09, 2012 9:41 AM
To: Randy Ficker
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] 9.1 causing "out of shared memory" error and higher serialization conflicts

On Fri, Mar 9, 2012 at 19:16, Randy Ficker <randyficker@gmail.com> wrote:
> Most writing transactions are using the REPEATABLE READ isolation
> level (the SERIALIZABLE level is not used at all).

Are you 100% sure about this? A major thing that changed in 9.1 was implementation for proper SERIALIZABLE isolation, which could indeed cause the sort of errors you described. Previously, asking for SERIALIZABLE level gave you REPEATABLE READ.

As far as I can tell, the max_pred_locks_per_transaction setting is irrelevant for isolation levels lower than SERIALIZABLE.

What's your default_transaction_isolation set to?

Regards,
Marti


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

pgsql-general by date:

Previous
From: Alexander Reichstadt
Date:
Subject: Question on datatypes returned for "select oid, typname from pg_type"
Next
From: Tom Lane
Date:
Subject: Re: Question on datatypes returned for "select oid, typname from pg_type"