> 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


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

Reply via email to