[pgpool-general: 1085] pgpool-II 3.2.1, 3.1.5, 3.0.9 released

Nozomi Anzai anzai at sraoss.co.jp
Fri Oct 12 17:12:56 JST 2012


pgpool Gobal Development Group is pleased to announce the availability
of pgpool-II 3.2.1, 3.1.5, 3.0.9, the latest stable versions of each major
series.

You can download them here:
http://pgpool.net/mediawiki/index.php/Downloads

============================================================================
3.2.1
============================================================================

http://git.postgresql.org/gitweb/?p=pgpool2.git;a=shortlog;h=refs/heads/V3_2_STABLE

- Fix send_cached_messages(). (Tatsuo Ishii)

  Before it had 8192 bytes fix length buffer for each row data and if data
  exceeded 8192 bytes, it just crashed.
  To fix this, eliminate copying raw data which is passed as an argument
  to buffer and pass the pointer to send_message.

- Fix that extended queries failed due to query cache. (Nozomi Anzai)

- Fix read_startup_packet(). (Tatsuo Ishii)

  If packet length is lower than 0, it should have returned immediately.
  Otherwise it would cause memory allocation error later on. 
  per pgpool-general:886. Also add canceling alarm.

  [pgpool-general: 886] read_startup_packet: out of memory
  From: Lonni J Friedman
  Date: Wed, 8 Aug 2012 10:18:15 -0700
  http://www.sraoss.jp/pipermail/pgpool-general/2012-August/000896.html

- Fix too watchdog process's aggressively kill other processes when pgpool
  shuts down. (Tatsuo Ishii)

  watchdog process calls kill(0,SIG) to kill all processes related to
  watchdog.  Unfortunately this will kill not only watchdog related
  processes but parent pgpool and even httpd in case when pgpool was
  invoked from pgpoolAdmin because they are in the same process
  group.
  So for now, fix is removing call to the kill() and setpgid() because
  setpgid() does nothing useful.

  In the future, we should call setsid() to establish new process group
  in any case.

- Fix query cache to regist such queries that start with "-- comment" or
  have comments more than one. (Nozomi Anzai)

- Fix query cache to ignore multi statement. (Nozomi Anzai)

  In previous, queries like "SELECT 1;UPDATE..." were cached, too, but it
  was wrong.

- Add a watchdog restriction to documents. (Yugo Nagata)

- Add NOTICE message handling to s_do_auth(). (Tatsuo Ishii)

  Without this, health check responses false alarm and causes failover.
  per bug track:

  #25 s_do_auth doesn't handle NoticeResponse (N) message
  Date:     2012-08-28 03:57
  Reporter: singh.gurjeet
  http://www.pgpool.net/mantisbt/view.php?id=25

- Remove unnecessary/confusing debug log from s_do_auth().(Tatsuo Ishii)

- Fix buffer overrun in Execute when memory cache enabled. 
  (Tatsuo Ishii)

  If one of bind parameter < 0, it was possible to produce more than 2
  byte string for "%02X" due to sign extention.
  Also use snprintf, rather than sprintf to prevent from possible buffer
  overrun in the future.

- Fix long standing memory leak bug with free_select_result() since
  pgpool-II 2.3 was born in December 2009. (Tatsuo Ishii)

  Actually this bug only appears when operated in replication mode
  (triggered by timestamp rewriting process by coincidence).
  Per bug track #24:

  #24 Severe memory leak in an OLTP environment
  Date:     2012-08-28 03:43
  Reporter: singh.gurjeet
  http://www.pgpool.net/mantisbt/view.php?id=24

- Fix typo in cache_reporting(). (Tatsuo Ishii)

- Fix inifinit loop in SSL mode.  (Tatsuo Ishii)

  When there's pending data in SSL layer of frontend, pool_process_query()
  checks pending data in backend. If there's non, it loops again and checks
  frontend/backend receive buffer by using is_cache_empty(). 
  Unfortunately it first checks pending data in SSL layer of frontend,
  thus goes to backend data and checks again (infinite loop).

  The solution is, if there's pending data in SSL layer of frontend and
  query is not in progress, call ProcessFrontendResponse() to process new
  request from frontend.

- Fix is_system_catalog() to use pgpool_regclass if available.
  (Tatsuo Ishii)

- Fix memory leak in pool_get_insert_table_name(). (Tatsuo Ishii)

  If session context's memory contex is used for nodeToString(), memory is
  not freed until session ends.
  See bug track #24 for more details.

  #24 Severe memory leak in an OLTP environment
  Date:     2012-08-28 03:43
  Reporter: singh.gurjeet
  http://www.pgpool.net/mantisbt/view.php?id=24

- Use fcntl(2) rather than flock(2) to lock oid map files. (Tatsuo Ishii)

  flock(2) is not portable and cannot be used on Solaris.
  Patch contributed by Ibrar Ahmed.

- Fix oversight of get_next_master_node() when operated in raw mode.
  (Tatsuo Ishii)

  If master node goes down, it always returned master node id 0.
  See [pgpool-general: 1039] for more details.

  [pgpool-general: 1039] Raw failover not working as expected on pgpool-II
  v3.2.0
  From: Quentin White
  Date: Tue, 25 Sep 2012 07:45:34 +0000
  http://www.sraoss.jp/pipermail/pgpool-general/2012-September/001057.html

- Fix segfault of do_query(). (Tatsuo Ishii)

  When memqcache enabled and extended protocol is used, do_query()
  accesses system catalog and use pool_read2(). Unfortunately parse message
  packet is given to Parse() and the packet contents is on pool_read2's
  buffer. Thus do_query could break the packet contents, and it leads to
  segfault.

  Solution is, allocate memory and copies the packet contents and pass to
  Parse(). Note that query context holds query string, which is in the
  packet as well. So we need to copy it and save the pointer in the
  query context.

  We think the problem is not only with Parse() but with other protocol
  modules. So this fix is not Parse() only, rather for other modules. For
  this purpose ProcessFrontendResponse() is changed.

  See bugtrack in detai.

  #21 pgpool-II 3.2.0 cannot execute sql through jdbc
  Date:     2012-08-17 16:31
  Reporter: elisechiang
  http://www.pgpool.net/mantisbt/view.php?id=21

- Fix to set unix domain socket path for pgpool PCP communication before
  setting up signal handlers. (Yugo Nagata)

  Previously, unlink of the socket in exitting process was failed because
  the path of the socket was not set.
  Patch contributed by Gilles Darold

  [pgpool-hackers: 131] Found bug with watchdog resulting in pgpool
                        segmentation fault
  From: Gilles Darold
  Date: Thu, 13 Sep 2012 18:54:42 +0200
  http://www.sraoss.jp/pipermail/pgpool-hackers/2012-September/000130.html

- Fix to output the message when, in watchdog, ifup/down or arping command
  does not exist. (Yugo Nagata)
- Fix long standing problem with do_query(). (Tatsuo Ishii)

  When 1) extended protocol used and 2)unnamed portal is used and 3) no
  explicit transaction is used, user's unnamed portal is removed by Sync
  message.
  This is because Sync message closes transaction and unnamed portal is
  removed. This leads to "portal "" does not exist" error.

  Fix is, use "Flush" message instead of Sync. Main difference between
  using Sync and Flush is, Flush does not return Ready for Query message.
  So do_query() does not return until all expected responses are returned.
  It seems the order of messages returned from backend is random, and
  do_query () manages it by using state bits.

============================================================================
3.1.5, 3.0.9
============================================================================

http://git.postgresql.org/gitweb/?p=pgpool2.git;a=shortlog;h=refs/heads/V3_1_STABLE
http://git.postgresql.org/gitweb/?p=pgpool2.git;a=shortlog;h=refs/heads/V3_0_STABLE

- Fix read_startup_packet. (Tatsuo Ishii)

  If packet length is lower than 0, it should
  have returned immediately. Otherwise it would cause memory allocation
  error later on.  per pgpool-general:886.
  Also add canceling alarm.

  [pgpool-general: 886] read_startup_packet: out of memory
  From: Lonni J Friedman
  Date: Wed, 8 Aug 2012 10:18:15 -0700
  http://www.sraoss.jp/pipermail/pgpool-general/2012-August/000896.html

- Add NOTICE message handling to s_do_auth. (Tatsuo Ishii)

  Without this, health check responses false alarm and causes failover.
  per bug track:

  #25 s_do_auth doesn't handle NoticeResponse (N) message
  Date:     2012-08-28 03:57
  Reporter: singh.gurjeet
  http://www.pgpool.net/mantisbt/view.php?id=25

  Also allow to receive ready for query packet *not* right after backend
  keydata.  I'm not sure if this could happen in the real world but the
  protocol seems to allow this.

- Remove unnecessary/confusing debug log from s_do_auth.(Tatsuo Ishii)

- Fix inifinit loop in SSL mode. When there's pending data in SSL layer
  of frontend, pool_process_query() checks pending data in backend. 
  (Tatsuo Ishii)

  If there's non, it loops again and checks frontend/backend receive buffer
  by using is_cache_empty(). Unfortunately it first checks pending data
  in SSL layer of frontend, thus goes to backend data and checks again
  (infinite loop).
  The solution is, if there's pending data in SSL layer of frontend and
  query is not in progress, call ProcessFrontendResponse() to process new
  request from frontend.

- Fix is_system_catalog to use pgpool_regclass if available.
  (Tatsuo Ishii)

- Fix memory leak in pool_get_insert_table_name(). (Tatsuo Ishii)

  If session context's memory contex is used for nodeToString(), memory is
  not freed until session ends.

- Fix possible memory leak in nodeToString(). (Tatsuo Ishii)

  Since the memory context could be session context, memory used for
  String object may be considerable if user session continues for hours or
  days.
  See bug track #24 for more details.

  #24 Severe memory leak in an OLTP environment
  Date:     2012-08-28 03:43
  Reporter: singh.gurjeet
  http://www.pgpool.net/mantisbt/view.php?id=24

- Fix long standing problem with do_query(). (Tatsuo Ishii)

  When 1) extended protocol used and 2)unnamed portal is used and 3) no
  explicit transaction is used, user's unnamed portal is removed by Sync
  message.
  This is because Sync message closes transaction and unnamed portal is
  removed. This leads to "portal "" does not exist" error.

  Fix is, use "Flush" message instead of Sync. Main difference between
  using Sync and Flush is, Flush does not return Ready for Query message.
  So do_query() does not return until all expected responses are returned.
  It seems the order of messages returned from backend is random, and
  do_query () manages it by using state bits.

============================================================================


-- 
Nozomi Anzai
SRA OSS, Inc. Japan


More information about the pgpool-general mailing list