[Pgpool-general] "kind does not match"

Jeff Davis pgpool at j-davis.com
Wed Oct 18 17:49:38 UTC 2006


On Wed, 2006-10-18 at 13:06 -0400, Bill Moran wrote:
> In response to Jeff Davis <pgpool at j-davis.com>:
> 
> > On Wed, 2006-10-18 at 11:48 -0400, Bill Moran wrote:
> > > googles on this have turned up nothing.
> > > 
> > > I'm running two instances of PostgreSQL 8.1.4 on the same machine 
> > > (different ports) for evaluation purposes.  pgpool seems to be starting
> > > fine, but I can't connect with psql:
> > > # psql -U pgsql -h 127.0.0.1 -p 9999 template1
> > > psql: server closed the connection unexpectedly
> > >         This probably means the server terminated abnormally
> > >         before or while processing the request.
> > > 
> > > Running pgpool with -nd reveals the following error when I try to
> > > connect:
> > > 2006-10-18 11:40:03 DEBUG: pid 55189: I am 55189 accept fd 6
> > > 2006-10-18 11:40:03 DEBUG: pid 55189: Protocol Major: 1234 Minor: 5679 database:  user:
> > > 2006-10-18 11:40:03 DEBUG: pid 55189: SSLRequest: sent N; retry startup
> > > 2006-10-18 11:40:03 DEBUG: pid 55189: Protocol Major: 3 Minor: 0 database: template1 user: pgsql
> > > 2006-10-18 11:40:03 ERROR: pid 55189: read_kind: kind does not match between backends master(82) secondary(69)
> > > 
> > > What does that mean?  Do I need to provide config files or any more
> > > information?
> > 
> > I think that happens when you have load_balance_mode false and
> > replication on. Pgpool will select from both servers and if the results
> > don't match, it causes that error.
> > 
> > I don't use that mode, so I could be mistaken. Hope this helps.
> 
> Thanks for the input, Jeff, but setting load_balance_mode to true doesn't
> change the behaviour.
> 


Ah, I think this might be the problem (this is from the docs in the
tarball, but doesn't appear on the site):

"
Deadlocks
Deadlocks across the backends cannot be detected. For example:

(tellers table is partitioned using the following rule)
  tid <= 10  --> node 0
  tid >= 10  --> node 1

A) BEGIN;
B) BEGIN;
A) SELECT * FROM tellers WHERE tid = 11 FOR UPDATE;
B) SELECT * FROM tellers WHERE tid = 1 FOR UPDATE;
A) SELECT * FROM tellers WHERE tid = 1 FOR UPDATE;
B) SELECT * FROM tellers WHERE tid = 11 FOR UPDATE;
In the case above, a single node cannot detect the deadlock, so pgpool-
II will continually wait for the response. This phenomenon occurs with
other queries that acquire row level locks. To avoid this problem, set
replication_timeout.

Also, if a deadlock occurs in one node, transaction states in each node
will not be consistent. Therefore, pgpool-II terminates the process if a
deadlock is detected.

pool_read_kind: kind does not match between master(84) slot[1] (69)
"

Are deadlocks on one node a possible problem?

If not, send the config and maybe that will reveal something.

Regards,
	Jeff Davis



More information about the Pgpool-general mailing list