[Pgpool-general] inconsistency when using two pgpool instances in warm standby?

Tatsuo Ishii ishii at sraoss.co.jp
Mon Dec 15 15:59:25 UTC 2008


Marcelo,

Great. Please post!
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> Tatsuo,
> 
> I also have some online-recory scripts that I have been meaning to  
> post on the list that perhaps some could use it as another  example  
> together with the ones you currently provide
> 
> 
> Marcelo
> PostgreSQL DBA
> Linux/Solaris System Administrator
> http://www.zeroaccess.org
> 
> On Dec 13, 2008, at 6:58 AM, Tatsuo Ishii wrote:
> 
> > [snip]
> >
> >> I can prepare ./contrib/ branch of heartbeat configuration  
> >> resources to the
> >> 2.2 relese if you are interested in.
> >
> > Great. I'd like to include your contributions into 2.2 release. I
> > will create ./contrib/heartbeat directory and will put files you
> > provide under it. Please provide a tar ball along with README.
> >
> > I'm almost ready for 2.2. F.Y.I. here is the NEWS file of 2.2.
> > ----------------------------------------------------------------------
> > 2.2 (urukiboshi) 2008/12/?
> > 	  * Version 2.2
> >
> > 	  This version enhances on line recovery and fixes important bugs
> > 	  in handling serializable transactions which could cause data
> > 	  inconsistency among DB nodes.
> >
> > 	  * New features
> >
> > 		- Add client_idle_limit_in_recovery directive. This will
> > 		  prevent 2nd stage of on line recovery from not going forward
> > 		  by idle clients sitting forever(Tatsuo)
> >
> > 		- Allow to load balance DECLARE, FETCH and CLOSE(Tatsuo)
> >
> > 	  * Bug fixes
> >
> > 		- Close all file descriptors when running in daemon mode.
> > 		  Otherwise we inherit sockets from apache when it's started by
> > 		  pgpoolAdmin. This results in that port 80 is occupied for
> > 		  example.  Patch provided by Akio Ishida. Also add
> > 		  chdir("/"). This is always good for daemon programs(Tatsuo)
> >
> > 	    - Allow MD5 authentication in raw mode as stated in
> >          docs(Tatsuo)
> >
> > 		- Check transaction serialization failure error in
> > 		  serializable mode and abort all nodes if so. Otherwise we
> > 		  allow data inconsistency among DB nodes(Tatsuo).
> >
> > 		  See following scenario: (M:master, S:slave)
> >
> > 		  	M:S1:BEGIN;
> > 			M:S2:BEGIN;
> > 			S:S1:BEGIN;
> > 			S:S2:BEGIN;
> > 			M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			M:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			S:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			M:S1:UPDATE t1 SET i = i + 1;
> > 			S:S1:UPDATE t1 SET i = i + 1;
> > 			M:S2:UPDATE t1 SET i = i + 1; <-- blocked
> > 			S:S1:COMMIT;
> > 			M:S1:COMMIT;
> > 			M:S2:ERROR:  could not serialize access due to concurrent update
> > 			S:S2:UPDATE t1 SET i = i + 1; <-- success in UPDATE and data  
> > becomes inconsistent!
> >
> > 		- avoid kind mismatch error caused by "SET TRANSACTION
> > 		  ISOLATION LEVEL must be called before any query"(Tatsuo).
> >
> > 		   This could happen in following scenario:
> >
> > 		    M:S1:BEGIN;
> >            S:S1:BEGIN;
> > 			M:S1:SELECT 1; <-- only sent to MASTER
> > 			M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> > 			M: <-- error
> > 			S: <-- ok since no previous SELECT is sent. kind mismatch error  
> > occurs!
> >
> > 	  * Incompatible changes
> >
> > 		- Always fail over and restart all children. Before we do
> > 		  restart only if master has not been changed. This is
> > 		  wrong. If we have trouble with network cable or something,
> > 		  TCP/IP stack keeps on retrying for long time and the only
> > 		  way to prevent it is restarting process(Tatsuo)
> > ----------------------------------------------------------------------
> > --
> > Tatsuo Ishii
> > SRA OSS, Inc. Japan
> > _______________________________________________
> > Pgpool-general mailing list
> > Pgpool-general at pgfoundry.org
> > http://pgfoundry.org/mailman/listinfo/pgpool-general
> 


More information about the Pgpool-general mailing list