[Pgpool-general] statements hanging after transaction w/ replication_strict on

Felix J. Ogris fjo-lists at ogris.de
Mon Oct 15 13:42:36 UTC 2007


Hi,

we have encountered a strange behaviour with replication_strict set to true.
If we do a SELECT inside a transaction and repeat that statement within the
same connection, but outside a transaction, then pgpool hangs:

postgres=# BEGIN;
BEGIN
postgres=# SELECT * FROM pg_user;
[ ... data follows ... ]
postgres=# COMMIT;
COMMIT
postgres=# SELECT * FROM pg_user;
[ ... hangs forever ... ]

With replication_strict set to false, everything is fine.


Backtrace:

(gdb) bt
#0  0x00000032a2ec0125 in __select_nocancel () from /lib64/tls/libc.so.6
#1  0x0000000000416be9 in pool_process_query (frontend=0x5a0750,
    backend=0x59f6d0, connection_reuse=0,
first_ready_for_query_received=Variable "first_ready_for_query_received" is
not available.
)
    at pool_process_query.c:309
#2  0x00000000004079c7 in do_child (unix_fd=3, inet_fd=4) at child.c:415
#3  0x0000000000403511 in fork_a_child (unix_fd=3, inet_fd=4, id=254)
    at main.c:717
#4  0x0000000000404f89 in main (argc=Variable "argc" is not available.
) at main.c:363


Our pgpool.conf (pgpool-II-1.2.1, CentOS 4.5, Linux 2.6.9):

listen_addresses                = '*'
port                            = 5432
socket_dir                      = '/tmp'
pcp_port                        = 9898
pcp_socket_dir                  = '/tmp'
pcp_timeout                     = 10
num_init_children               = 256
child_life_time                 = 300
connection_life_time            = 300
child_max_connection            = 10
logdir                          = '/var/run'
print_timestamp                 = true
connection_cache                = true
health_check_timeout            = 20
health_check_period             = 30
health_check_user               = pgpool
ignore_leading_white_space      = true
log_statement                   = false
log_hostname                    = false
log_connections                 = false
enable_pool_hba                 = false
replication_mode                = true
replication_strict              = false
replication_timeout             = 60000
load_balance_mode               = true
replication_stop_on_mismatch    = false
insert_lock                     = true
backend_hostname0       = '10.0.0.21'
backend_port0           = 5432
backend_weight0         = 1
backend_hostname1       = '10.0.0.22'
backend_port1           = 5432
backend_weight1         = 1
backend_hostname2       = '10.0.0.23'
backend_port2           = 5432
backend_weight2         = 1

Any ideas?

TIA
Felix




More information about the Pgpool-general mailing list