[Pgpool-general] Understanding Error Messages

Tatsuo Ishii ishii at sraoss.co.jp
Wed Dec 31 10:43:33 UTC 2008


> Quoting "Tatsuo Ishii" <ishii at sraoss.co.jp>:
> > BTW, next release of pgpool-II will print the statement which
> > generates the error above.
> 
> Any idea when the next version will be released?

Coming January, I hope.

> Alternatively, is the current dev version stable enough for production use?

I hope so:-) Here is the current ChangeLog from dev version (not yet
committed). You might get some idea how 2.2 is like.

2008-12-31  Tatsuo Ishii  <ishii at sraoss.co.jp>
	* Add -d (debug) option to pcp commands. Patch contributed by Jun
	  Kuriyama.
	
2008-12-30  Tatsuo Ishii  <ishii at sraoss.co.jp>
	* Fix bug with query cancel. It seems this has not been working since
	  pgpool-II was born.
	  To fix this, now we have each connection's pid and cancel key in the
	  shared memory area. If a cancel packet is sent, the table is searched
	  by the pid and the cancel key. If found, the actual cancel key is
	  sent to each backend.

	* Fix detect_error() so that it ignores NOTICE.
	  Without this following error occurs, for example:

	  BEGIN;
	  BEGIN;

	  ERROR:  kind mismatch among backends 0[N] 1[E]

	* Enhance "kind mismatch" error message to include original query.
	  This would not work for extended queries, though.

2008-12-23  Tatsuo Ishii  <ishii at sraoss.co.jp>
	* Do not make a connection cache for "postgres" database.

2008-12-20  Tatsuo Ishii  <ishii at sraoss.co.jp>
	* If SERIAL data type is used(checked in system catalog)  and
	  insert_lock is true then automatically lock the table.

2008-12-13  Tatsuo Ishii  <ishii at sraoss.co.jp>
	* pool_process_query.c: refactor pool_process_query.c. Now it is
	  devided into pool_process_query.c and pool_proto_modules.c.
	  Also pool_proto_modules.h added which is a companion header
	  file.

	* pool_process_query.c: avoid kind mismatch error caused by "SET
	  TRANSACTION ISOLATION LEVEL must be called before any query".
	  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!

	* pool_process_query.c: fix ReadyForQuery() by calling pool_unread
	  if backend after do_error_command executed not returns read for
	  query packet.

2008-12-08  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* pool_process_query.c: Check serialization failure error and
	  abort all nodes if so. Otherwise we allow data inconsistency
	  among DB nodes. 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!

2008-12-08  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* pool_process_query.c: Fix uninitialized variable in
	  read_kind_from_backend. Also refactor to make it more effective
	  and readable. Add lots of comments and enhance error message to
	  display each kind.
	
2008-11-15  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* pool_process_query.c: Fix do_error_command. If mistakely assumed
	  that after sending an error query, always ReadyForQuery came
	  right after that. If some debugging or logging verboseness is
	  set, PostgreSQL might sends NOTICE before ReadyForQuery.

2008-11-12  Tatsuo Ishii  <ishii at sraoss.co.jp>
	
	* pool_process_query.c: Fix do_command in case of notice message
	  sent right after Complete command response. See threads in
	  pgpool-general:

	  Subject: Re: [Pgpool-general] Pgpool-II - replication problems
	  From: "nir osovsky" <nosovsky1 at gmail.com>
	  Date: Wed, 12 Nov 2008 01:00:36 -0800

2008-11-07  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* Fix thoughtless coding in MD5 case checking. We should have
	  considered raw mode case. Bug pointed out by Duco Fijma.

2008-11-07  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* Add client_idle_limit_in_recovery
	
2008-08-29  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* main.c: Fix bug in fork_a_child which mistakely closed pipe fds
	  which are not created yet at the startup time

	* pool_process_query.c: Allow to load balance DECLARE, FETCH and
	  CLOSE. Also fix comments.

2008-08-28  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* main.c: 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.  Pach provided by Akio Ishida. Also add
	  chdir("/"). This is always good for daemon programs.

	* main.c: 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.

2008-08-28  Tatsuo Ishii  <ishii at sraoss.co.jp>

	* pool_process_query.c: Fix/enhance log messages and comments

--
Tatsuo Ishii
SRA OSS, Inc. Japan


More information about the Pgpool-general mailing list