[Pgpool-hackers] Problems with serializable connections and pgpool-II

Tatsuo Ishii ishii at sraoss.co.jp
Mon Dec 1 00:36:03 UTC 2008


Your complain is correct and we have to do something for this.
Actually you could reproduce the problem by using plain psql.

However I have no time to make a fix right now. Please be patient for
a while.
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> Hello,
> 
> I'm Fabio Tranchitella from Debian; I'm hitting some problems with pgpool-II
> version 2.1 and serializable connections, using the replication and load
> balancing features.
> 
> I can easily reproduce the problem with the following python code:
> 
> """
> import thread
> import psycopg2
> import time
> 
> def do_it(value):
>     o1 = psycopg2.connect('user=demo dbname=demo host=demo port=5434')
>     o1.set_isolation_level(2)
>     c1 = o1.cursor()
>     print "UPDATE " + value
>     c1.execute("UPDATE users SET mobile = '" + value + "' WHERE id = 1;")
>     time.sleep(5)
>     print "COMMIT " + value
>     o1.commit()
>     print "COMMITTED " + value
> 
> thread.start_new_thread(do_it, ('A',))
> time.sleep(1)
> thread.start_new_thread(do_it, ('B',))
> time.sleep(20)
> """
> 
> What I get running this code is the following output:
> 
> UPDATE A
> UPDATE B
> COMMIT A
> COMMITTED A
> Unhandled exception in thread started by <function do_it at 0xb7ac4f44>
> Traceback (most recent call last):
>   File "test.py", line 12, in do_it
>     c1.execute("UPDATE users SET mobile = '" + value + "' WHERE id = 1;")
> psycopg2.ProgrammingError: kind mismatch between backends
> HINT:  check data consistency between master and other db node
> server closed the connection unexpectedly
>         This probably means the server terminated abnormally
>         before or while processing the request.
> 
> The daemon logs the following message:
> 
> 2008-11-22 19:33:59 ERROR: pid 20362: pool_process_query: 1 th kind C does not match with master connection kind E
> 2008-11-22 19:33:59 LOG:   pid 20362: do_child: exits with status 1 due to error
> 
> It seems to me that pgpool-II doesn't understand the serialization exception
> generated by one of the two PostgreSQL servers, as reported in the PostgreSQL
> log:
> 
> 2008-11-22 19:33:59 CET ERROR:  could not serialize access due to concurrent update
> 
> I suppose pgpool-II should handle in a special way the serialization errors
> from PostgreSQL, rollback the transactions and report back to the client the
> PostgreSQL error.
> 
> Any idea about how to solve this issue?
> 
> Thanks in advance,
> 
> -- 
> Fabio Tranchitella <kobold at debian.org>                        .''`.
> Proud Debian GNU/Linux developer, admin and user.            : :'  :
>                                                              `. `'`
>    http://people.debian.org/~kobold/                           `-
> _____________________________________________________________________
> 1024D/7F961564, fpr 5465 6E69 E559 6466 BF3D 9F01 2BF8 EE2B 7F96 1564
> _______________________________________________
> Pgpool-hackers mailing list
> Pgpool-hackers at pgfoundry.org
> http://pgfoundry.org/mailman/listinfo/pgpool-hackers


More information about the Pgpool-hackers mailing list