Re: Normal errors codes in serializable transactions

From: Tatsuo Ishii <ishii(at)postgresql(dot)org>
To: jon(dot)smark(at)yahoo(dot)com
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Normal errors codes in serializable transactions
Date: 2013-05-08 23:34:58
Message-ID: 20130509.083458.1838644215501720872.t-ishii@sraoss.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> The manual mentions that SERIALIZABLE transactions may abort with error 40001,
> in which case the client application is supposed to retry the transaction.  I've been
> stress testing an application by issuing lots of concurrent requests, and sure enough,
> every now and then I get back those 40001 errors.  However, sometimes I also get
> back error 40P01.  It seems no ill comes to pass if I also retry those transactions,
> but since this error code is not explicitly mentioned in the manual, one question
> arises: which error codes can be considered "normal" (in the sense it's reasonable
> for the client to retry) when issuing SERIALIZABLE transactions, and which ones
> (within the scope of class 40, of course) are to be considered real errors?

40P01 is mentioned in the manual. See "A. PostgreSQL Error Codes" of
Appendixes.

In most cases it means that transaction is aborted because PostgreSQL
detected deadlock.

Grepping source indicates that part of HOT standby code uses the error
code as well, I'm not sure what is the situation when the error code
is supposed to be generated, however.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bruce Momjian 2013-05-09 00:52:40 Re: pg_upgrade -u
Previous Message Alban Hertroys 2013-05-08 23:30:21 Re: question on most efficient way to increment a column