[Pgpool-general] pgpool-II 3.0.1 on FreeBSD 8.1-RELEASE - Incredible error!!

Snoop snoop at email.it
Fri Dec 17 11:43:23 UTC 2010


Thank you very much for your time Tatsuo, I wasn't really expecting to
deal with an almost two months old bug in the stable port.

On Fri, 2010-12-17 at 09:55 +0900, Tatsuo Ishii wrote:
> It is a known issue and fixed in this.
> 
> http://lists.pgfoundry.org/pipermail/pgpool-committers/2010-October/001521.html
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese: http://www.sraoss.co.jp
> 
> > Guys, I'm re-posting the message that I've sent yesterday. Please if my question is too trivial to be posted here help me to address it in the right place.
> > Many thanks.
> > ________________________________________
> > Hi everybody! I need some help please.
> > 
> > I was using as a test pgpool-II 2.3.2.2 compiled from ports on FreeBSD
> > 8.1-RELEASE with PostgreSQL 8.4.4_2 for Synchronous Multi-Master
> > Replication.
> > Everything was working fine. I've upgraded to PostgreSQL 9.0.1_2
> > and pgpool-II 3.0.1 (same server but kernel upgraded to patchset 2 which
> > I believe is not relevant anyway but just for the record) and I get this
> > incredible error:
> > 
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: listen_addresses
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '*' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: port
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 5430 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: pcp_port
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 9898 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: socket_dir
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/tmp' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: pcp_socket_dir
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/tmp' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_socket_dir
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/tmp' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: pcp_timeout
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 10 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: num_init_children
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 32 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: max_pool
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 4 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: child_life_time
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 300 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: connection_life_time
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 0 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: child_max_connections
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 0 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: client_idle_limit
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 0 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: authentication_timeout
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 60 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: logdir
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/tmp' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: pid_file_name
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/var/run/pgpool/pgpool.pid'
> > kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: replication_mode
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: replication_strict
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: replication_timeout
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 5000 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: load_balance_mode
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key:
> > failover_if_affected_tuples_mismatch
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876:
> > failover_if_affected_tuples_mismatch: 0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: replication_stop_on_mismatch
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: replication_stop_on_mismatch: 0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: replicate_select
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: replicate_select: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: reset_query_list
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 'ABORT; RESET ALL; SET
> > SESSION AUTHORIZATION DEFAULT' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: extract_string_tokens: token: ABORT
> > 2010-12-15 17:56:58 DEBUG: pid 4876: extract_string_tokens: token:
> > RESET ALL
> > 2010-12-15 17:56:58 DEBUG: pid 4876: extract_string_tokens: token:  SET
> > SESSION AUTHORIZATION DEFAULT
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: print_timestamp
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: master_slave_mode
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: connection_cache
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: health_check_timeout
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 20 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: health_check_period
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 0 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: health_check_user
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 'nobody' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: failover_command
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: failback_command
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: insert_lock
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: ignore_leading_white_space
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: true kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: log_statement
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: log_connections
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: log_hostname
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: parallel_mode
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: enable_query_cache
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: pgpool2_hostname
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_hostname0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 'xxxxxxxx001' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_port0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 5432 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: pool_config: port slot number 0 
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_weight0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 1 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: pool_config: weight slot number 0
> > weight: 1.000000
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_data_directory0
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/data' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_hostname1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 'xxxx002' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_port1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 5432 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: pool_config: port slot number 1 
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_weight1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 1 kind: 2
> > 2010-12-15 17:56:58 DEBUG: pid 4876: pool_config: weight slot number 1
> > weight: 1.000000
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: backend_data_directory1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: '/data' kind: 4
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: enable_pool_hba
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: ssl
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: false kind: 1
> > 2010-12-15 17:56:58 DEBUG: pid 4876: key: debug_level
> > 2010-12-15 17:56:58 DEBUG: pid 4876: value: 0 kind: 2
> > 2010-12-15 17:56:58 ERROR: pid 4876: pool_init_pool_passwd: couldn't
> > open /usr/local/etc/pgpool.conf/pool_passwd. reason: Not a directory
> > 2010-12-15 17:56:58 DEBUG: pid 4876: shmem_exit(0)
> > 
> > I've tried to rename the config file and to create a directory with the
> > same config file name (as it seems to be expecting but just for a try,
> > because it's clearly insane) but it doesn't fix it. In fact the error
> > 
> > pool_init_pool_passwd: couldn't
> > open /usr/local/etc/pgpool.conf/pool_passwd. reason: Not a directory
> > 2010-12-15 17:56:58 DEBUG: pid 4876: shmem_exit(0)
> > 
> > will become
> > 
> > pool_init_pool_passwd: couldn't
> > open /usr/local/etc/pgpool.conf/pgpool.conf/pool_passwd. reason: Not a
> > directory
> > 2010-12-15 17:56:58 DEBUG: pid 4876: shmem_exit(0)
> > 
> > I'm pretty sure this is a little and very easily fixable bug.
> > I've sent a private email to the FreeBSD port maintainer too that is
> > most likely to be in this mailing list anyway, but just to be sure.
> > 
> > Below my configuration file:
> > 
> > #
> > # pgpool-II configuration file sample
> > # $Header: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample,v 1.26
> > 2009/02/15 05:26:28 t-ishii Exp $
> > 
> > # Host name or IP address to listen on: '*' for all, '' for no TCP/IP
> > # connections
> > listen_addresses = '*'
> > 
> > # Port number for pgpool
> > port = 5430
> > 
> > # Port number for pgpool communication manager
> > pcp_port = 9898
> > 
> > # Unix domain socket path.  (The Debian package defaults to
> > # /var/run/postgresql.)
> > socket_dir = '/tmp'
> > 
> > # Unix domain socket path for pgpool communication manager.
> > # (Debian package defaults to /var/run/postgresql)
> > pcp_socket_dir = '/tmp'
> > 
> > # Unix domain socket path for the backend. Debian package defaults
> > to /var/run/postgresql!
> > backend_socket_dir = '/tmp'
> > 
> > # pgpool communication manager timeout. 0 means no timeout, but strongly
> > not recommended!
> > pcp_timeout = 10
> > 
> > # number of pre-forked child process
> > num_init_children = 32
> > 
> > # Number of connection pools allowed for a child process
> > max_pool = 4
> > 
> > # If idle for this many seconds, child exits.  0 means no timeout.
> > child_life_time = 300
> > 
> > # If idle for this many seconds, connection to PostgreSQL closes.
> > # 0 means no timeout.
> > connection_life_time = 0
> > 
> > # If child_max_connections connections were received, child exits.
> > # 0 means no exit.
> > child_max_connections = 0
> > 
> > # If client_idle_limit is n (n > 0), the client is forced to be
> > # disconnected whenever after n seconds idle (even inside an explicit
> > # transactions!)
> > # 0 means no disconnect.
> > client_idle_limit = 0
> > 
> > # Maximum time in seconds to complete client authentication.
> > # 0 means no timeout.
> > authentication_timeout = 60
> > 
> > # Logging directory
> > logdir = '/tmp'
> > 
> > # pid file name
> > pid_file_name = '/var/run/pgpool/pgpool.pid'
> > 
> > # Replication mode
> > replication_mode = true
> > 
> > # Set this to true if you want to avoid deadlock situations when
> > # replication is enabled.  There will, however, be a noticable
> > performance
> > # degration.  A workaround is to set this to false and insert
> > a /*STRICT*/
> > # comment at the beginning of the SQL command.
> > replication_strict = false
> > 
> > # When replication_strict is set to false, there will be a chance for
> > # deadlocks.  Set this to nonzero (in milliseconds) to detect this
> > # situation and resolve the deadlock by aborting current session.
> > replication_timeout = 5000
> > 
> > # Load balancing mode, i.e., all SELECTs are load balanced.
> > # This is ignored if replication_mode is false.
> > load_balance_mode = true
> > 
> > # Load balance weight for master and secondary.  The actual weight is
> > # calculated by weight_master divided by weight_secondary.  For
> > # example both
> > #
> > # weight_master = 10 and weight_secondary = 5
> > # weight_master = 4 and weight_secondary = 2
> > #
> > # are regarded as the master having double the weight compared to the
> > # secondary.  Master and secondary have the same weight in the default.
> > # weight_master = 0.5
> > # weight_secondary = 0.5
> > 
> > # When set to true, if a backend returns number of affected tuples by
> > INSERT/UPDATE/DELETE different between the backends, the backends that
> > differ from most frequent result set are degenerated. If set to false,
> > the session is terminated and the backends are not degenerated.
> > failover_if_affected_tuples_mismatch = false
> > 
> > # if there's a data mismatch between master and secondary
> > # start degeneration to stop replication mode
> > replication_stop_on_mismatch = false
> > 
> > # If true, replicate SELECT statement when load balancing is disabled.
> > # If false, it is only sent to the master node.
> > replicate_select = true
> > 
> > # Semicolon separated list of queries to be issued at the end of a
> > session
> > reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
> > # for 8.3 or newer PostgreSQL versions DISCARD ALL can be used as
> > # follows. However beware that DISCARD ALL holds exclusive lock on
> > # pg_listener so it will be a serious performance problem if there are
> > # lots of concurrent sessions.
> > # reset_query_list = 'ABORT; DISCARD ALL'
> > 
> > # If true print timestamp on each log line.
> > print_timestamp = true
> > 
> > # If true, operate in master/slave mode.
> > master_slave_mode = false
> > 
> > # If true, cache connection pool.
> > connection_cache = true
> > 
> > # Health check timeout.  0 means no timeout.
> > health_check_timeout = 20
> > 
> > # Health check period.  0 means no health check.
> > health_check_period = 0
> > 
> > # Health check user
> > health_check_user = 'nobody'
> > 
> > # Execute command by failover.
> > # special values:  %d = node id
> > #                  %h = host name
> > #                  %p = port number
> > #                  %D = database cluster path
> > #                  %m = new master node id
> > #                  %M = old master node id
> > #                  %% = '%' character
> > #
> > failover_command = ''
> > 
> > # Execute command by failback.
> > # special values:  %d = node id
> > #                  %h = host name
> > #                  %p = port number
> > #                  %D = database cluster path
> > #                  %m = new master node id
> > #                  %M = old master node id
> > #                  %% = '%' character
> > #
> > failback_command = ''
> > 
> > # If true, automatically locks a table with INSERT statements to keep
> > # SERIAL data consistency.  If the data does not have SERIAL data
> > # type, no lock will be issued. An /*INSERT LOCK*/ comment has the
> > # same effect.  A /NO INSERT LOCK*/ comment disables the effect.
> > insert_lock = true
> > 
> > # If true, ignore leading white spaces of each query while pgpool judges
> > # whether the query is a SELECT so that it can be load balanced.  This
> > # is useful for certain APIs such as DBI/DBD which is known to adding an
> > # extra leading white space.
> > ignore_leading_white_space = true
> > 
> > # If true, print all statements to the log.  Like the log_statement
> > option
> > # to PostgreSQL, this allows for observing queries without engaging in
> > full
> > # debugging.
> > log_statement = false
> > 
> > # If true, incoming connections will be printed to the log.
> > log_connections = false
> > 
> > # If true, hostname will be shown in ps status. Also shown in
> > # connection log if log_connections = true.
> > # Be warned that this feature will add overhead to look up hostname.
> > log_hostname = false
> > 
> > # if non 0, run in parallel query mode
> > parallel_mode = false
> > 
> > # if non 0, use query cache
> > enable_query_cache = false
> > 
> > #set pgpool2 hostname 
> > pgpool2_hostname = ''
> > 
> > # system DB info
> > #system_db_hostname = 'localhost'
> > #system_db_port = 5432
> > #system_db_dbname = 'pgpool'
> > #system_db_schema = 'pgpool_catalog'
> > #system_db_user = 'pgpool'
> > #system_db_password = ''
> > 
> > # backend_hostname, backend_port, backend_weight
> > # here are examples
> > backend_hostname0 = 'xxxx001'
> > backend_port0 = 5432
> > backend_weight0 = 1
> > backend_data_directory0 = '/data'
> > backend_hostname1 = 'xxxx002'
> > backend_port1 = 5432
> > backend_weight1 = 1
> > backend_data_directory1 = '/data'
> > 
> > # - HBA -
> > 
> > # If true, use pool_hba.conf for client authentication.
> > enable_pool_hba = false
> > 
> > # - online recovery -
> > # online recovery user
> > #recovery_user = 'nobody'
> > 
> > # online recovery password
> > #recovery_password = ''
> > 
> > # execute a command in first stage.
> > #recovery_1st_stage_command = ''
> > 
> > # execute a command in second stage.
> > #recovery_2nd_stage_command = ''
> > 
> > # maximum time in seconds to wait for the recovering node's postmaster
> > # start-up. 0 means no wait.
> > # this is also used as a timer waiting for clients disconnected before
> > # starting 2nd stage
> > #recovery_timeout = 90
> > 
> > # If client_idle_limit_in_recovery is n (n > 0), the client is forced
> > # to be disconnected whenever after n seconds idle (even inside an
> > # explicit transactions!) in the second stage of online recovery.
> > # n = -1 forces clients to be disconnected immediately.
> > # 0 disables this functionality(wait forever).
> > # This parameter only takes effect in recovery 2nd stage.
> > #client_idle_limit_in_recovery = 0
> > 
> > # Specify table name to lock. This is used when rewriting lo_creat
> > # command in replication mode. The table must exist and has writable
> > # permission to public. If the table name is '', no rewriting occurs.
> > #lobj_lock_table = ''
> > 
> > # If true, enable SSL support for both frontend and backend connections.
> > # note that you must also set ssl_key and ssl_cert for SSL to work in
> > # the frontend connections.
> > ssl = false
> > # path to the SSL private key file
> > #ssl_key = './server.key'
> > # path to the SSL public certificate file
> > #ssl_cert = './server.cert'
> > 
> > # If either ssl_ca_cert or ssl_ca_cert_dir is set, then certificate
> > # verification will be performed to establish the authenticity of the
> > # certificate.  If neither is set to a nonempty string then no such
> > # verification takes place.  ssl_ca_cert should be a path to a single
> > # PEM format file containing CA root certificate(s), whereas
> > ssl_ca_cert_dir
> > # should be a directory containing such files.  These are analagous to
> > the
> > # -CAfile and -CApath options to openssl verify(1), respectively.
> > #ssl_ca_cert = ''
> > #ssl_ca_cert_dir = ''
> > 
> > # Debug message verbosity level. 0: no message, 1 <= : more verbose
> > debug_level = 0
> > 
> > 
> > 
> > Any help/workaround/quick fix would be appreciated.
> > Thank you.
> > 
> > 
> >  
> >  
> >  --
> >  Caselle da 1GB, trasmetti allegati fino a 3GB e in piu' IMAP, POP3 e SMTP autenticato? GRATIS solo con Email.it http://www.email.it/f
> >  
> >  Sponsor:
> >  Emailpaghe: le paghe in 3 click, veloce ed efficiente puoi averlo in prova gratuita fino al 31 dicembre 2010. Cosa aspetti provalo!
> >  Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=10684&d=16-12
> > _______________________________________________
> > Pgpool-general mailing list
> > Pgpool-general at pgfoundry.org
> > http://pgfoundry.org/mailman/listinfo/pgpool-general




More information about the Pgpool-general mailing list