[pgpool-general: 1660] Pgpool insert_lock not maintaining serial sequences between multiple back ends

Steve Kuekes steve.kuekes at physicianspharmacy.com
Wed Apr 24 00:52:53 JST 2013


We have a test Pgpool system running Pgpool 3.2.3 and Postgres 9.1.

The configuration is one master postgres and one slave postgres in 
replication mode with load balancing and a separate system running pgpool.

When there are multiple systems that are inserting rows into tables that 
contain a "serial" datatype the values of the serials sometimes get 
different values on the different back end systems.  We have enabled 
insert_lock in the config file and created the insert_lock table. 
According to a debugging trace it appears that inserts to these tables 
are using the insert_lock table to lock a row by the oid of the 
destination table.

This can be replicated by having 5 instances of clients (Using the jdbc 
postgres driver) to perform 10,000 inserts each to the same table at the 
same time.  We then compare the data on both the master and slave system 
and the serial id's are different for almost 1/2 of the 50,000 rows.

If we do not use the insert_lock table and rely on complete table 
locking we still get a few hundred serial ids that are wrong out of the 
50,000.

It seems that the insert_lock option in the configuration file has a 
problem whether we use the insert_lock table or not.

Thanks for any help on this.
-- 
Steve Kuekes

Physicians Pharmacy Alliance
118 MacKenan Drive, Suite 200
Cary, NC  27511
919-465-5801 direct
919-463-5555 main
919-463-5566 fax

steve.kuekes at physicianspharmacy.com


More information about the pgpool-general mailing list