[pgpool-general: 1861] pgpool-II 3.3 Beta1 released

Yugo Nagata nagata at sraoss.co.jp
Fri Jun 21 22:28:27 JST 2013


Pgpool Global Development Group is pleased to announce the
availability of pgpool-II 3.3 beta1.

Users are encouraged to take part in our beta test program.
Please help us in testing and making pgpool-II 3.3 better!

You can download it from here:
http://www.pgpool.net/download.php

Major changes from 3.2.4 to beta1 are:

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

                        3.3 (tokariboshi) 2013/xx/xx

* Version 3.3

      This is the first version of pgpool-II 3.3 series.
      That is, a "major version up" from 3.2 series.

      __________________________________________________________________

* Incompatible changes

    - All the follwing are about watchdog.
      See "New features" section below for details of these changes.

      - Default monitoring method was changed from query mode to heartbeat mode.

      - Failover/failback commands are executed in only one pgpool-II.

      - In default, all the query caches on shared memory are cleared when
        standby pgpool-II escalates to active.

      - Database name, user name, and password used for monitring other
        pgpool-II by query are specified by dedicated parameters.
        Previously, template1, recovery_user, and recovery_password are used.

      __________________________________________________________________

* New features

  ** Watchdog 

    - Add a new monitring method using heartbeat signal of UDP packet in
      lifecheck. (Yugo Nagata)

      You can select a method from either of two methods, "heartbeat" mode or
      "query" mode.

      The heartbeat mode is the new method. In this mode, watchdog monitors
      other pgpool-II process by using heartbeat signal. Watchdog receives
      heartbeat signals sent by other pgpool-II periodically. If there are no
      signal for a certain period, watchdog regards it as failure of the
      pgpool-II. For redundancy you can use multiple networks for heartbeat
      exchange between pgpool-IIs. This mode is default and recommended one.

      The query mode is the conventional method. In this mode, watchdog monitors
      pgpool-II's service rather than process. Watchdog sends queries to other
      pgpool-II and checks the response. Note that this method requires connections
      from other pgpool-IIs, so it would fail motoring if num_init_children isn't
      large enough. This mode is deprecated and left for backward compatibility.

      Add these new parameters:
          - wd_lifecheck_method
          - wd_heartbeat_port
          - wd_heartbeat_keepalive
          - wd_heartbeat_deadtime
          - heartbeat_destinationX
          - heartbeat_destination_portX
          - heartbeat_deviceX

    - Add interlocking mechanism of exclusive failover/failback command
      execution. (Yugo Nagata)
    
      When using multiple pgpool-IIs with watchdog enabled, failover commands
      (failover_command, failback_command, and follow_master_command) get
      executed only at one pgpool-II.
    
      Previously, these command got executed at all pgpool-IIs.

    - Add authentication mechanism for watchdog packet communication.
      (Yugo Nagata)
    
      Watchdog packets (include heartbeat signal) from pgpool-II with wrong
      authentication key are rejected. All pgpool-IIs must have the same key,
      which is specified wd_authkey parameter in pgpool.conf. pgpool-II with
      wrong authkey can't even start watchdog, because the startup packet is
      rejected by other pgpool-IIs.
 
    - Add clear_memqcache_on_escalation parameter. (Yugo Nagata)
    
      If this is on, all the query caches on shared memory are cleared when
      standby pgpool-II escalates to active.

      This is aimed to prevent the new active pgpool-II from using inconsistent
      query caches with the previous active.
 
    - Add wd_escalation_command parameter. (Yugo Nagata)
    
      This specifies command which is executed at escalation on the new active
      pgpool-II server. The timing is just before virtual IP is brought up.

    - Add parameters wd_lifecheck_dbname, wd_lifecheck_user, and
      wd_lifecheck_password. (Yugo Nagata)
    
      These parameters specify the database name, the user name, and password
      used in query mode lifecheck of watchdog . Previously, these are hard
      coded to use template1, recovery_user, and recovery_password.

    - When delegate_IP parameter is emply, viertual IP is neither brought up
      nor switched. (Yugo Nagata)

      This allows multi-master like configuration without virtual IP. 

  ** Others

    - Import PostgreSQL 9.2 raw parser. (Nozomi Anzai, Tatsuo Ishii)

    - Add a tool called pgpool_setup to set up pgpool-II and PostgreSQL
      temporary installation in current directory for *testing* purpose.
      (Tatsuo Ishii)
    
      usage: pgpool_setup [-m r|s][-n num_clusters][--no-stop]
         -m s: create an installation as streaming replication mode.
         (the default)
         -m r: create an installation as native replication mode.
         -n num_clusters: create num_clusters PostgreSQL database cluster nodes
         --no-stop: do not stop pgpool and PostgreSQL after the work

    - Support installation method using CREATE EXTENSION for pgpool-recovery
      and pgpool-regclass. (Tatsuo Ishii)
    
      Older installtion method is still preserved.

      Note: extension names are "pgpool_recovery" and "pgpool_regclass", not
      "pgpool-recovery" and "pgpool-regclass" because latters are not
      convenient in using CREATE EXTENSION command (requires double quotes).

    - Add a function "pgpool_pgctl()" which enebles to execute
      pg_ctl stop/restart/reload (except for start) by SQL. (Nozomi Anzai)
    
      $ psql sales -c "select pgpool_pgctl('reload', 'fast')";
       pgpool_pgctl
      --------------
       t
      (1 row)

      This function always ignores the actual result and returns 't', so the
      user can't know if pg_ctl succeeded or failed. To use this we have to set
      the custom variable for security which limits the users to execute pg_ctl
      who has the permission of data directory.

    - Add shell scripts to install pgpool-II and pgpoolAdmin by RPM.
      (Nozomi Anzai, Yugo Nagata)
    
      To make the installer package execute getsources.sh, and the directory
      named "work" will be created. And you rpmbuild each spec files in work/,
      put RPMs into work/installer and make tar ball of work/installer.
      The installer does not only install RPMs but also edit postgresql.conf,
      pgpool.conf, pg_hba.conf, recovery.conf and scripts for failover and
      online recovery.
      
      This assumes two-nodes configuration and the install script have to be
      executed in both nodes.

    - Add new parameter "search_primary_node_timeout". 
      (Muhammad Usama, Tatsuo Ishii)
    
      The parameter specifies the maximum amount of time in seconds to
      search for a primary node when a failover scenario occurs. Patch
      contributed by Muhammad Usama.  Japanese doc and slight editing of
      English doc by Tatsuo Ishii.

    - Chinese tutorials for memqcache and watchdog. (Bambo Huang)

    - Add regression test suit. (Tatsuo Ishii)

      __________________________________________________________________

* Bug fixes

    - Consider timeout waiting for compeletion of failback request in on line
      recovery. (Tatsuo Ishii)
    
      This will prevent the situation that recovery operation continues forever
      and we cannot even shutdown pgpool-II main process. This could happen
      especially while executing follow master command.

    - Fix a bug that %H of follow_master_command is not assigned correctly the
      new primary node in stream replication mode.
      (Tatsuo Ishii)

    - Fix not to execute escalation when the pgpool-II which is already active
      receives down notification from other pgpool-II. (Yugo Nagata)

    - Fix wd_create_send_socket() not to execute select() before connect().
      (Yugo Nagata)

      How select() works on an unconnected socket is undefined, and differs
      between platform. On Linux, this returns 2 and it is eventually harmless.
      However, on Soraris, this returns 0 and it is indistinguishable from time
      timeout, so watchdog wouldn't work correctly.

    - Fix error when pgpool_regclass is not installed. (Tatsuo Ishii)

      The query used in pool_has_pgpool_regclass() fails if pgpool_regclass
      does not exist. The bug was introduced in 3.2.4.  See [pgpool-general:
      1722] for more details.

    - Fix do_query() not to hang when PostgreSQL returns an error.
      (Tatsuo Ishii)

      The typical symptom is "I see SELECT is keep on running according to
      pg_stat_activity". To fix this pgpool-II just exits the process and
      kill the existig connection.  This is not gentle but at this point I
      believe this is the best solution.

    - Fix possible deadlock during failover with watchdog enabled.
      (Yugo Nagata)

      This is reported in Bug track #54 by arshu arora
      http://www.pgpool.net/mantisbt/view.php?id=54

    - Fix unnecessary degeneration caused by error on commit. (Tatsuo Ishii)

      In master slave mode, if master gets an error at commit, while other
      slaves are normal at commit, we don't need to degenrate any backend
      because it is likely that the "kind mismatch error" was caused by a
      deferred trigger.

    - Fix bug with do_query which causes hung in extended protocol.
      (Tatsuo Ishii)
        
      This problem could occur when insert lock is enabled and
      pgpool_catalog.insert_lock exists, See [pgpool-general: 1684] for more
      details.

    - Fix possible failure of query cache invalidation for DML in transaction.
      (Tatsuo Ishii)

      CREATE TABLE t1(i INTEGER);
      CREATE TABLE t2(i INTEGER);
      SELECT * FROM t1;
      BEGIN;
      DELETE FROM t2 WHERE i = 0;
      INSERT INTO t1(i) VALUES(1);
      COMMIT;
    
      SELECT * FROM t1;
    
      At commit pgpool tries to delete cache for t2 but failes because
      there's no oid table entry for t2. Problem is, it fails to check oid
      table for t1. So cahce for t1 remains and the last SELECT incorrectly
      returns cached data. Fix is, continuing to check oid table entries.

      This is reported in Bug track #58 by wms 
      http://www.pgpool.net/mantisbt/view.php?id=58

      __________________________________________________________________

* Enhancements

    - Fix to restart watchdog processes automatically when these exit abnormally.
      (Yugo Nagata)

    - Add more error checks and reportings to functions executing ping command
      with watchdog enabled. (Tatsuo Ishii)

    - Replace some unsafe functions, sprintf and strncpy, with more safe ones,
      snprintf and strlcpy respectively. (Yugo Nagata)

    - Replace "sticky bit" to "setuid bit" in log message, comments and
      funcation names. (Yugo Nagata)
    
      These words were used mistakenly and caused confusion.

    - Fix description on SSL in pool_hba.conf.sample. (Tatsuo Ishii)

    - Allow to load balancing in an explicit transaction in replication mode.
      (Tatsuo Ishii)
    
        The condition to allow the load balancing is as follows:
        1) replicate_select is off
        2) no writing functions are used
        3) transaction isolation level is not serializable
        4) no DML/DDL are issued in the transaction

    - Chinese manual is updated to the latest especially about watchdog. (Bambo Huang)

-- 
Yugo Nagata <nagata at sraoss.co.jp>


More information about the pgpool-general mailing list