[pgpool-general: 4099] Re: issue with single node failover
Muhammad Usama
m.usama at gmail.com
Fri Oct 9 00:16:59 JST 2015
Hi
I have found the problem and attached is the patch for the fix.
I will check-in the patch after executing the regression test. Meanwhile,
you can also test it
Thanks
Best regards
Muhammad Usama
On Wed, Oct 7, 2015 at 4:17 AM, Tatsuo Ishii <ishii at postgresql.org> wrote:
> I have confirmed the problem is in 3.4.0 or later, not in 3.3.x or
> before.
>
> Usama,
>
> Can you please take care of this? It seems the problem was introduced
> in 3.4.0.
>
> protocol/child.c:
>
> /* In non parallel mode single valid backend is all we need
> * to continue
> */
> if(valid_backends == 0)
> {
> fatal_error = true;
> error_msg = "pgpool is not accepting any new
> connections";
> error_detail = "all backend nodes are down, pgpool
> requires atleast one valid node";
> error_hint = "repair the backend nodes and restart
> pgpool";
> }
>
> Also "atleast" seems a typo.
>
> Best regards,
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp
>
> > I have pgpool 3.4.3 (from the pgdb93 repo) setup in raw mode pointing to
> a
> > single backend node on a separate server. I would like set pgpool to
> > failover to the single node and attempt to reconnect indefinitely. For
> > some reason I can't get the config right or it may be a bug? I have it
> > working in a different environment using pgpool 3.2 from the epel repo
> >
> > Any help would be greatly appreciated.
> >
> >
> > # Log
> >
> > 2015-10-06 09:45:49: pid 13371: DETAIL: postmaster on DB node 0 was
> > shutdown by administrative command
> > 2015-10-06 09:45:49: pid 13371: LOG: received degenerate backend request
> > for node_id: 0 from pid [13371]
> > 2015-10-06 09:45:49: pid 13361: LOG: starting degeneration. shutdown
> host
> > 172.16.0.59(5432)
> > 2015-10-06 09:45:49: pid 13361: LOG: failover: no valid backends node
> found
> > 2015-10-06 09:45:49: pid 13361: LOG: Restart all children
> > 2015-10-06 09:45:49: pid 13361: LOG: failover: set new primary node: -1
> > 2015-10-06 09:45:49: pid 13374: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13370: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13376: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13367: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13363: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13373: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13372: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13365: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13364: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13377: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13366: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13375: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13368: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13369: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13371: LOG: child process received shutdown
> > request signal 3
> > 2015-10-06 09:45:49: pid 13379: LOG: worker process received restart
> > request
> > failover done. shutdown host 172.16.0.59(5432)2015-10-06 09:45:49: pid
> > 13361: LOG: failover done. shutdown host 172.16.0.59(5432)
> > 2015-10-06 09:45:50: pid 13378: LOG: restart request received in pcp
> child
> > process
> > 2015-10-06 09:45:50: pid 13361: LOG: PCP child 13378 exits with status
> 256
> > in failover()
> > 2015-10-06 09:45:50: pid 13361: LOG: fork a new PCP child pid 13399 in
> > failover()
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13363 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13363
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13364 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13364
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13365 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13365
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13366 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13366
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13367 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13367
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13368 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13368
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13369 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13369
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13370 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13370
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13371 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13371
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13372 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13372
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13373 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13373
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13374 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13374
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13375 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13375
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13376 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13376
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13377 exits
> > with status 0
> > 2015-10-06 09:45:50: pid 13361: LOG: child process with pid: 13377
> exited
> > with success and will not be restarted
> > 2015-10-06 09:45:50: pid 13361: LOG: worker child process with pid:
> 13379
> > exits with status 256
> > 2015-10-06 09:45:50: pid 13361: LOG: fork a new worker child process
> with
> > pid: 13400
> > 2015-10-06 09:46:02: pid 13392: FATAL: pgpool is not accepting any new
> > connections
> > 2015-10-06 09:46:02: pid 13392: DETAIL: all backend nodes are down,
> pgpool
> > requires atleast one valid node
> > 2015-10-06 09:46:02: pid 13392: HINT: repair the backend nodes and
> restart
> > pgpool
> > 2015-10-06 09:46:02: pid 13361: LOG: child process with pid: 13392 exits
> > with status 256
> > 2015-10-06 09:46:02: pid 13361: LOG: fork a new child process with pid:
> > 13401
> > 2015-10-06 09:46:27: pid 13401: FATAL: pgpool is not accepting any new
> > connections
> > 2015-10-06 09:46:27: pid 13401: DETAIL: all backend nodes are down,
> pgpool
> > requires atleast one valid node
> > 2015-10-06 09:46:27: pid 13401: HINT: repair the backend nodes and
> restart
> > pgpool
> > 2015-10-06 09:46:27: pid 13361: LOG: child process with pid: 13401 exits
> > with status 256
> > 2015-10-06 09:46:27: pid 13361: LOG: fork a new child process with pid:
> > 13410
> > 2015-10-06 09:46:34: pid 13390: FATAL: pgpool is not accepting any new
> > connections
> > 2015-10-06 09:46:34: pid 13390: DETAIL: all backend nodes are down,
> pgpool
> > requires atleast one valid node
> > 2015-10-06 09:46:34: pid 13390: HINT: repair the backend nodes and
> restart
> > pgpool
> > 2015-10-06 09:46:34: pid 13361: LOG: child process with pid: 13390 exits
> > with status 256
> > 2015-10-06 09:46:34: pid 13361: LOG: fork a new child process with pid:
> > 13412
> >
> >
> >
> >
> >
> > # Config File
> >
> >
> #------------------------------------------------------------------------------
> > # CONNECTIONS
> >
> #------------------------------------------------------------------------------
> >
> > # - pgpool Connection Settings -
> >
> > listen_addresses = '*'
> > # Host name or IP address to listen
> on:
> > # '*' for all, '' for no TCP/IP
> > connections
> > # (change requires restart)
> > port = 9999
> > # Port number
> > # (change requires restart)
> > socket_dir = '/var/run/pgpool-II-93'
> > # Unix domain socket path
> > # (change requires restart)
> >
> >
> > # - pgpool Communication Manager Connection Settings -
> >
> > pcp_port = 9898
> > # Port number for pcp
> > # (change requires restart)
> > pcp_socket_dir = '/var/run/pgpool-II-93'
> > # Unix domain socket path for pcp
> > # (change requires restart)
> >
> > # - Backend Connection Settings -
> >
> > backend_hostname0 = '172.16.0.59'
> > # Host name or IP address to connect
> to
> > for backend 0
> > backend_port0 = 5432
> > # Port number for backend 0
> > # backend_weight0 = 1
> > # Weight for backend 0 (only in load
> > balancing mode)
> > # backend_data_directory0 = '/var/lib/pgsql/9.3/data'
> > # Data directory for backend 0
> > backend_flag0 = 'ALLOW_TO_FAILOVER'
> > # Controls various backend behavior
> > # ALLOW_TO_FAILOVER or
> > DISALLOW_TO_FAILOVER
> > #backend_hostname1 = 'host2'
> > #backend_port1 = 5433
> > #backend_weight1 = 1
> > #backend_data_directory1 = '/data1'
> > #backend_flag1 = 'ALLOW_TO_FAILOVER'
> >
> > # - Authentication -
> >
> > enable_pool_hba = off
> > # Use pool_hba.conf for client
> > authentication
> > pool_passwd = 'pool_passwd'
> > # File name of pool_passwd for md5
> > authentication.
> > # "" disables pool_passwd.
> > # (change requires restart)
> > authentication_timeout = 60
> > # Delay in seconds to complete client
> > authentication
> > # 0 means no timeout.
> >
> > # - SSL Connections -
> >
> > ssl = off
> > # Enable SSL support
> > # (change requires restart)
> > #ssl_key = './server.key'
> > # Path to the SSL private key file
> > # (change requires restart)
> > #ssl_cert = './server.cert'
> > # Path to the SSL public certificate
> file
> > # (change requires restart)
> > #ssl_ca_cert = ''
> > # Path to a single PEM format file
> > # containing CA root certificate(s)
> > # (change requires restart)
> > #ssl_ca_cert_dir = ''
> > # Directory containing CA root
> > certificate(s)
> > # (change requires restart)
> >
> >
> >
> #------------------------------------------------------------------------------
> > # POOLS
> >
> #------------------------------------------------------------------------------
> >
> > # - Pool size -
> >
> > num_init_children = 15
> > # Number of pools
> > # (change requires restart)
> > max_pool = 1
> > # Number of connections per pool
> > # (change requires restart)
> >
> > # - Life time -
> >
> > child_life_time = 120 # was 300
> > # Pool exits after being idle for this
> > many seconds
> > child_max_connections = 0
> > # Pool exits after receiving that many
> > connections
> > # 0 means no exit
> > connection_life_time = 0 # was 0
> > # Connection to backend closes after
> > being idle for this many seconds
> > # 0 means no close
> > client_idle_limit = 0 # was 0
> > # Client is disconnected after being
> > idle for that many seconds
> > # (even inside an explicit
> transactions!)
> > # 0 means no disconnection
> >
> >
> >
> #------------------------------------------------------------------------------
> > # LOGS
> >
> #------------------------------------------------------------------------------
> >
> > # - Where to log -
> >
> > log_destination = 'stderr'
> > # Where to log
> > # Valid values are combinations of
> > stderr,
> > # and syslog. Default to stderr.
> >
> > # - What to log -
> >
> > print_timestamp = on
> > # Print timestamp on each line
> > # (change requires restart)
> >
> > log_connections = on
> > # Log connections
> > log_hostname = off
> > # Hostname will be shown in ps status
> > # and in logs if connections are
> logged
> > log_statement = off
> > # Log all statements
> > log_per_node_statement = off
> > # Log all statements
> > # with node and backend informations
> > log_standby_delay = 'none'
> > # Log standby delay
> > # Valid values are combinations of
> > always,
> > # if_over_threshold, none
> >
> > # - Syslog specific -
> >
> > syslog_facility = 'LOCAL0'
> > # Syslog local facility. Default to
> > LOCAL0
> > syslog_ident = 'pgpool'
> > # Syslog program identification string
> > # Default to 'pgpool'
> >
> > # - Debug -
> >
> > debug_level = 2
> > # Debug message verbosity level
> > # 0 means no message, 1 or more mean
> > verbose
> >
> >
> >
> #------------------------------------------------------------------------------
> > # FILE LOCATIONS
> >
> #------------------------------------------------------------------------------
> >
> > pid_file_name = '/var/run/pgpool-II-93/pgpool.pid'
> > # PID file name
> > # (change requires restart)
> > logdir = '/var/log/pgpool-II'
> > # Directory of pgPool status file
> > # (change requires restart)
> >
> >
> >
> #------------------------------------------------------------------------------
> > # CONNECTION POOLING
> >
> #------------------------------------------------------------------------------
> >
> > #connection_cache = off
> > connection_cache = on
> > # Activate connection pools
> > # (change requires restart)
> >
> > # Semicolon separated list of queries
> > # to be issued at the end of a session
> > # The default is for 8.3 and later
> > reset_query_list = 'ABORT; DISCARD ALL'
> > # The following one is for 8.2 and
> before
> > #reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
> >
> >
> >
> #------------------------------------------------------------------------------
> > # REPLICATION MODE
> >
> #------------------------------------------------------------------------------
> >
> > replication_mode = off
> > # Activate replication mode
> > # (change requires restart)
> > replicate_select = off
> > # Replicate SELECT statements
> > # when in replication or parallel mode
> > # replicate_select is higher priority
> > than
> > # load_balance_mode.
> >
> > insert_lock = on
> > # Automatically locks a dummy row or a
> > table
> > # with INSERT statements to keep
> SERIAL
> > data
> > # consistency
> > # Without SERIAL, no lock will be
> issued
> > lobj_lock_table = ''
> > # When rewriting lo_creat command in
> > # replication mode, specify table
> name to
> > # lock
> >
> > # - Degenerate handling -
> >
> > replication_stop_on_mismatch = off
> > # On disagreement with the packet kind
> > # sent from backend, degenerate the
> node
> > # which is most likely "minority"
> > # If off, just force to exit this
> session
> >
> > failover_if_affected_tuples_mismatch = off
> > # On disagreement with the number of
> > affected
> > # tuples in UPDATE/DELETE queries,
> then
> > # degenerate the node which is most
> > likely
> > # "minority".
> > # If off, just abort the transaction
> to
> > # keep the consistency
> >
> >
> >
> #------------------------------------------------------------------------------
> > # LOAD BALANCING MODE
> >
> #------------------------------------------------------------------------------
> >
> > load_balance_mode = off
> > # Activate load balancing mode
> > # (change requires restart)
> > ignore_leading_white_space = on
> > # Ignore leading white spaces of each
> > query
> > white_function_list = ''
> > # Comma separated list of function
> names
> > # that don't write to database
> > # Regexp are accepted
> > black_function_list = 'nextval,setval'
> > # Comma separated list of function
> names
> > # that write to database
> > # Regexp are accepted
> >
> >
> >
> #------------------------------------------------------------------------------
> > # MASTER/SLAVE MODE
> >
> #------------------------------------------------------------------------------
> >
> > master_slave_mode = off
> > # Activate master/slave mode
> > # (change requires restart)
> > master_slave_sub_mode = 'slony'
> > # Master/slave sub mode
> > # Valid values are combinations slony
> or
> > # stream. Default is slony.
> > # (change requires restart)
> >
> > # - Streaming -
> >
> > sr_check_period = 0
> > # Streaming replication check period
> > # Disabled (0) by default
> > sr_check_user = 'webserver'
> > # Streaming replication check user
> > # This is necessary even if you
> disable
> > # streaming replication delay check
> with
> > # sr_check_period = 0
> > sr_check_password = ''
> > # Password for streaming replication
> > check user
> > delay_threshold = 0
> > # Threshold before not dispatching
> query
> > to standby node
> > # Unit is in bytes
> > # Disabled (0) by default
> >
> > # - Special commands -
> >
> > follow_master_command = ''
> > # Executes this command after master
> > failover
> > # Special values:
> > # %d = node id
> > # %h = host name
> > # %p = port number
> > # %D = database cluster path
> > # %m = new master node id
> > # %H = hostname of the new master
> node
> > # %M = old master node id
> > # %P = old primary node id
> > # %r = new master port number
> > # %R = new master database cluster
> path
> > # %% = '%' character
> >
> >
> >
> #------------------------------------------------------------------------------
> > # PARALLEL MODE
> >
> #------------------------------------------------------------------------------
> >
> > parallel_mode = off
> > # Activates parallel query mode
> > # (change requires restart)
> > pgpool2_hostname = ''
> > # Set pgpool2 hostname
> > # (change requires restart)
> >
> > # - System DB info -
> >
> > system_db_hostname = 'localhost'
> > # (change requires restart)
> > system_db_port = 5432
> > # (change requires restart)
> > system_db_dbname = 'pgpool'
> > # (change requires restart)
> > system_db_schema = 'pgpool_catalog'
> > # (change requires restart)
> > system_db_user = 'pgpool'
> > # (change requires restart)
> > system_db_password = ''
> > # (change requires restart)
> >
> >
> >
> #------------------------------------------------------------------------------
> > # HEALTH CHECK
> >
> #------------------------------------------------------------------------------
> >
> > health_check_period = 10
> > # Health check period
> > # Disabled (0) by default
> > health_check_timeout = 10
> > # Health check timeout
> > # 0 means no timeout
> > health_check_user = 'webserver'
> > # Health check user
> > health_check_password = ''
> > # Password for health check user
> > health_check_max_retries = 30
> > # Maximum number of times to retry a
> > failed health check before giving up.
> > health_check_retry_delay = 1
> > # Amount of time to wait (in seconds)
> > between retries.
> >
> >
> >
> #------------------------------------------------------------------------------
> > # FAILOVER AND FAILBACK
> >
> #------------------------------------------------------------------------------
> >
> > failover_command = ''
> > # Executes this command at failover
> > # Special values:
> > # %d = node id
> > # %h = host name
> > # %p = port number
> > # %D = database cluster path
> > # %m = new master node id
> > # %H = hostname of the new master
> node
> > # %M = old master node id
> > # %P = old primary node id
> > # %r = new master port number
> > # %R = new master database cluster
> path
> > # %% = '%' character
> > failback_command = ''
> > # Executes this command at failback.
> > # Special values:
> > # %d = node id
> > # %h = host name
> > # %p = port number
> > # %D = database cluster path
> > # %m = new master node id
> > # %H = hostname of the new master
> node
> > # %M = old master node id
> > # %P = old primary node id
> > # %r = new master port number
> > # %R = new master database cluster
> path
> > # %% = '%' character
> >
> >
> >
> >
> > fail_over_on_backend_error = on
> > # Initiates failover when
> > reading/writing to the
> > # backend communication socket fails
> > # If set to off, pgpool will report an
> > # error and disconnect the session.
> >
> > search_primary_node_timeout = 0
> > # Timeout in seconds to search for the
> > # primary node when a failover occurs.
> > # 0 means no timeout, keep searching
> > # for a primary node forever.
> >
> >
> #------------------------------------------------------------------------------
> > # ONLINE RECOVERY
> >
> #------------------------------------------------------------------------------
> >
> > recovery_user = 'webserver'
> > # Online recovery user
> > recovery_password = ''
> > # Online recovery password
> > recovery_1st_stage_command = ''
> > # Executes a command in first stage
> > recovery_2nd_stage_command = ''
> > # Executes a command in second stage
> > recovery_timeout = 90
> > # Timeout in seconds to wait for the
> > # recovering node's postmaster to
> start
> > up
> > # 0 means no wait
> > client_idle_limit_in_recovery = 0
> > # Client is disconnected after being
> idle
> > # for that many seconds in the second
> > stage
> > # of online recovery
> > # 0 means no disconnection
> > # -1 means immediate disconnection
> >
> >
> >
> #------------------------------------------------------------------------------
> > # WATCHDOG
> >
> #------------------------------------------------------------------------------
> >
> > # - Enabling -
> >
> > use_watchdog = off
> > # Activates watchdog
> > # (change requires restart)
> >
> > # -Connection to up stream servers -
> >
> > trusted_servers = ''
> > # trusted server list which are used
> > # to confirm network connection
> > # (hostA,hostB,hostC,...)
> > # (change requires restart)
> > ping_path = '/bin'
> > # ping command path
> > # (change requires restart)
> >
> > # - Watchdog communication Settings -
> >
> > wd_hostname = ''
> > # Host name or IP address of this
> > watchdog
> > # (change requires restart)
> > wd_port = 9000
> > # port number for watchdog service
> > # (change requires restart)
> > wd_authkey = ''
> > # Authentication key for watchdog
> > communication
> > # (change requires restart)
> >
> > # - Virtual IP control Setting -
> >
> > delegate_IP = ''
> > # delegate IP address
> > # If this is empty, virtual IP never
> > bring up.
> > # (change requires restart)
> > ifconfig_path = '/sbin'
> > # ifconfig command path
> > # (change requires restart)
> > if_up_cmd = 'ifconfig eth0:0 inet $_IP_$ netmask 255.255.255.0'
> > # startup delegate IP command
> > # (change requires restart)
> > if_down_cmd = 'ifconfig eth0:0 down'
> > # shutdown delegate IP command
> > # (change requires restart)
> >
> > arping_path = '/usr/sbin' # arping command path
> > # (change requires restart)
> >
> > arping_cmd = 'arping -U $_IP_$ -w 1'
> > # arping command
> > # (change requires restart)
> >
> > # - Behaivor on escalation Setting -
> >
> > clear_memqcache_on_escalation = on
> > # Clear all the query cache on shared
> > memory
> > # when standby pgpool escalate to
> > active pgpool
> > # (= virtual IP holder).
> > # This should be off if client
> connects
> > to pgpool
> > # not using virtual IP.
> > # (change requires restart)
> > wd_escalation_command = ''
> > # Executes this command at escalation
> > on new active pgpool.
> > # (change requires restart)
> >
> > # - Lifecheck Setting -
> >
> > # -- common --
> >
> > wd_lifecheck_method = 'heartbeat'
> > # Method of watchdog lifecheck
> > ('heartbeat' or 'query')
> > # (change requires restart)
> > wd_interval = 10
> > # lifecheck interval (sec) > 0
> > # (change requires restart)
> >
> > # -- heartbeat mode --
> >
> > wd_heartbeat_port = 9694
> > # Port number for receiving heartbeat
> > signal
> > # (change requires restart)
> > wd_heartbeat_keepalive = 2
> > # Interval time of sending heartbeat
> > signal (sec)
> > # (change requires restart)
> > wd_heartbeat_deadtime = 30
> > # Deadtime interval for heartbeat
> > signal (sec)
> > # (change requires restart)
> > heartbeat_destination0 = 'host0_ip1'
> > # Host name or IP address of
> > destination 0
> > # for sending heartbeat signal.
> > # (change requires restart)
> > heartbeat_destination_port0 = 9694
> > # Port number of destination 0 for
> > sending
> > # heartbeat signal. Usually this is
> the
> > # same as wd_heartbeat_port.
> > # (change requires restart)
> > heartbeat_device0 = ''
> > # Name of NIC device (such like
> 'eth0')
> > # used for sending/receiving
> heartbeat
> > # signal to/from destination 0.
> > # This works only when this is not
> empty
> > # and pgpool has root privilege.
> > # (change requires restart)
> >
> > #heartbeat_destination1 = 'host0_ip2'
> > #heartbeat_destination_port1 = 9694
> > #heartbeat_device1 = ''
> >
> > # -- query mode --
> >
> > wd_life_point = 3
> > # lifecheck retry times
> > # (change requires restart)
> > wd_lifecheck_query = 'SELECT 1'
> > # lifecheck query to pgpool from
> > watchdog
> > # (change requires restart)
> > wd_lifecheck_dbname = 'template1'
> > # Database name connected for
> lifecheck
> > # (change requires restart)
> > wd_lifecheck_user = 'nobody'
> > # watchdog user monitoring pgpools in
> > lifecheck
> > # (change requires restart)
> > wd_lifecheck_password = ''
> > # Password for watchdog user in
> > lifecheck
> > # (change requires restart)
> >
> > # - Other pgpool Connection Settings -
> >
> > #other_pgpool_hostname0 = 'host0'
> > # Host name or IP address to connect
> to
> > for other pgpool 0
> > # (change requires restart)
> > #other_pgpool_port0 = 5432
> > # Port number for othet pgpool 0
> > # (change requires restart)
> > #other_wd_port0 = 9000
> > # Port number for othet watchdog 0
> > # (change requires restart)
> > #other_pgpool_hostname1 = 'host1'
> > #other_pgpool_port1 = 5432
> > #other_wd_port1 = 9000
> >
> >
> >
> #------------------------------------------------------------------------------
> > # OTHERS
> >
> #------------------------------------------------------------------------------
> > relcache_expire = 0
> > # Life time of relation cache in
> seconds.
> > # 0 means no cache expiration(the
> > default).
> > # The relation cache is used for cache
> > the
> > # query result against PostgreSQL
> system
> > # catalog to obtain various
> information
> > # including table structures or if
> it's a
> > # temporary table or not. The cache is
> > # maintained in a pgpool child local
> > memory
> > # and being kept as long as it
> survives.
> > # If someone modify the table by using
> > # ALTER TABLE or some such, the
> relcache
> > is
> > # not consistent anymore.
> > # For this purpose, cache_expiration
> > # controls the life time of the cache.
> >
> > relcache_size = 256
> > # Number of relation cache
> > # entry. If you see frequently:
> > # "pool_search_relcache: cache
> > replacement happend"
> > # in the pgpool log, you might want to
> > increate this number.
> >
> > check_temp_table = on
> > # If on, enable temporary table check
> in
> > SELECT statements.
> > # This initiates queries against
> system
> > catalog of primary/master
> > # thus increases load of master.
> > # If you are absolutely sure that your
> > system never uses temporary tables
> > # and you want to save access to
> > primary/master, you could turn this off.
> > # Default is on.
> >
> >
> >
> #------------------------------------------------------------------------------
> > # ON MEMORY QUERY MEMORY CACHE
> >
> #------------------------------------------------------------------------------
> > memory_cache_enabled = off
> > # If on, use the memory cache
> > functionality, off by default
> > memqcache_method = 'shmem'
> > # Cache storage method. either
> > 'shmem'(shared memory) or
> > # 'memcached'. 'shmem' by default
> > # (change requires restart)
> > memqcache_memcached_host = 'localhost'
> > # Memcached host name or IP address.
> > Mandatory if
> > # memqcache_method = 'memcached'.
> > # Defaults to localhost.
> > # (change requires restart)
> > memqcache_memcached_port = 11211
> > # Memcached port number. Mondatory if
> > memqcache_method = 'memcached'.
> > # Defaults to 11211.
> > # (change requires restart)
> > memqcache_total_size = 67108864
> > # Total memory size in bytes for
> storing
> > memory cache.
> > # Mandatory if memqcache_method =
> > 'shmem'.
> > # Defaults to 64MB.
> > # (change requires restart)
> > memqcache_max_num_cache = 1000000
> > # Total number of cache entries.
> > Mandatory
> > # if memqcache_method = 'shmem'.
> > # Each cache entry consumes 48 bytes
> on
> > shared memory.
> > # Defaults to 1,000,000(45.8MB).
> > # (change requires restart)
> > memqcache_expire = 0
> > # Memory cache entry life time
> specified
> > in seconds.
> > # 0 means infinite life time. 0 by
> > default.
> > # (change requires restart)
> > memqcache_auto_cache_invalidation = on
> > # If on, invalidation of query cache
> is
> > triggered by corresponding
> > # DDL/DML/DCL(and memqcache_expire).
> If
> > off, it is only triggered
> > # by memqcache_expire. on by default.
> > # (change requires restart)
> > memqcache_maxcache = 409600
> > # Maximum SELECT result size in bytes.
> > # Must be smaller than
> > memqcache_cache_block_size. Defaults to 400KB.
> > # (change requires restart)
> > memqcache_cache_block_size = 1048576
> > # Cache block size in bytes. Mandatory
> > if memqcache_method = 'shmem'.
> > # Defaults to 1MB.
> > # (change requires restart)
> > memqcache_oiddir = '/var/log/pgpool/oiddir'
> > # Temporary work directory to
> record
> > table oids
> > # (change requires restart)
> > white_memqcache_table_list = ''
> > # Comma separated list of table names
> to
> > memcache
> > # that don't write to database
> > # Regexp are accepted
> > black_memqcache_table_list = ''
> > # Comma separated list of table names
> > not to memcache
> > # that don't write to database
> > # Regexp are accepted
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > [image: FBS Logo]
> >
> > *Travis Kirstine*, Web Development Supervisor
> > *t *905‑477‑3600* x *301 | *m *647‑534‑4798 |
> > tkirstine at firstbasesolution.com
> >
> > *First Base Solutions Inc.*
> > 140 Renfrew Drive, Suite 100 | Markham | Ontario | L3R 6B3
> > *t* 905‑477‑3600 | *f* 905‑477‑0892 | www.firstbasesolutions.com
> _______________________________________________
> pgpool-general mailing list
> pgpool-general at pgpool.net
> http://www.pgpool.net/mailman/listinfo/pgpool-general
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pgpool.net/pipermail/pgpool-general/attachments/20151008/ac9a253e/attachment.htm>
-------------- next part --------------
diff --git a/src/protocol/child.c b/src/protocol/child.c
index c0cc066..1672553 100644
--- a/src/protocol/child.c
+++ b/src/protocol/child.c
@@ -2046,7 +2046,7 @@ static void get_backends_status(unsigned int *valid_backends, unsigned int *down
{
if (BACKEND_INFO(i).backend_status == CON_DOWN)
(*down_backends)++;
- else if(VALID_BACKEND(i))
+ if (VALID_BACKEND(i))
(*valid_backends)++;
}
}
diff --git a/src/protocol/pool_connection_pool.c b/src/protocol/pool_connection_pool.c
index f8814e3..bab6319 100644
--- a/src/protocol/pool_connection_pool.c
+++ b/src/protocol/pool_connection_pool.c
@@ -852,10 +852,13 @@ static POOL_CONNECTION_POOL *new_connection(POOL_CONNECTION_POOL *p)
if (pool_config->fail_over_on_backend_error)
{
notice_backend_error(i);
+ ereport(FATAL,
+ (errmsg("failed to create connection to the backend"),
+ errdetail("executing failover on backend")));
}
else
{
- ereport(LOG,
+ ereport(FATAL,
(errmsg("creating new connection to backend"),
errdetail("not executing failover because fail_over_on_backend_error is off")));
}
More information about the pgpool-general
mailing list