Yugo Nagata [Thu, 25 Jul 2013 08:19:03 +0000 (17:19 +0900)]
Fix a bug of setting heartbeat_destination parameter
Yugo Nagata [Thu, 25 Jul 2013 06:20:36 +0000 (15:20 +0900)]
Fix some comments, messages and variables
Yugo Nagata [Thu, 25 Jul 2013 06:03:30 +0000 (15:03 +0900)]
Fix PATH variable to prioritize pghome
Yugo Nagata [Thu, 25 Jul 2013 05:42:41 +0000 (14:42 +0900)]
Fix to configure path to bin/lib of postgresql92 and pgpoolAdmin tar ball
Yugo Nagata [Thu, 25 Jul 2013 03:29:12 +0000 (12:29 +0900)]
Prepare 3.3.0-RC1
Nozomi Anzai [Thu, 25 Jul 2013 05:14:48 +0000 (14:14 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Nozomi Anzai [Thu, 25 Jul 2013 05:11:47 +0000 (14:11 +0900)]
Add debug mode of install.sh itself so that script becomes quiet.
Yugo Nagata [Thu, 25 Jul 2013 03:22:19 +0000 (12:22 +0900)]
Fix typos
Yugo Nagata [Thu, 25 Jul 2013 03:17:30 +0000 (12:17 +0900)]
Prepare 3.3.0-RC1
Yugo Nagata [Thu, 25 Jul 2013 03:11:04 +0000 (12:11 +0900)]
Prepare 3.3.0-RC1
Tatsuo Ishii [Thu, 25 Jul 2013 01:00:27 +0000 (10:00 +0900)]
Fix mistake in ssh command.
Nozomi Anzai [Wed, 24 Jul 2013 06:59:20 +0000 (15:59 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Nozomi Anzai [Wed, 24 Jul 2013 06:56:56 +0000 (15:56 +0900)]
Add the description about pgpool.pg_ctl.
Some visual improvements.
Yugo Nagata [Wed, 24 Jul 2013 04:56:13 +0000 (13:56 +0900)]
Fix typos of the version name
Yugo Nagata [Tue, 23 Jul 2013 07:23:42 +0000 (16:23 +0900)]
Fix to not print netmask to pg_hba.conf if node is specified by hostname
Yugo Nagata [Tue, 23 Jul 2013 06:34:34 +0000 (15:34 +0900)]
Fix a bug that password-less ssh setting fails when postgres user home isn't /home/postgres
Yugo Nagata [Tue, 23 Jul 2013 06:28:44 +0000 (15:28 +0900)]
Fix to remove /vaw/www/html/pgpoolAdmin directory in uninstall.sh
Yugo Nagata [Tue, 23 Jul 2013 05:03:15 +0000 (14:03 +0900)]
Add pcp_watchdog_info to pgpool.spec
Tatsuo Ishii [Tue, 23 Jul 2013 04:36:37 +0000 (13:36 +0900)]
Add watchdog test.
Currently the test is minimum. It just checks standby->master
escalation.
Tatsuo Ishii [Mon, 22 Jul 2013 23:09:04 +0000 (08:09 +0900)]
Fix "deploy" section.
This should had been updated when watchdog is introduced.
Yugo Nagata [Mon, 22 Jul 2013 09:59:14 +0000 (18:59 +0900)]
Fix to not bind network devices to sockets when heartbeat_device parameter is empty
Tatsuo Ishii [Mon, 22 Jul 2013 08:41:32 +0000 (17:41 +0900)]
Fix bug introduced in
8b803e1ea38c3ac9a7775f7fb9ba43870bca7dca (Add wait_for_pgpool_reload function).
Add -p option to specify start port #.
Tatsuo Ishii [Sat, 20 Jul 2013 03:58:09 +0000 (12:58 +0900)]
Fix bug with health check when used with child_life_time reported in [pgpool-general: 1892].
Here is the explanation why the problem occurs:
--------------------------------------------------------------------------------
Ok. I think I finally understand what's going on here.
Pgpool main process (14317) started health checking at Jul 12 09:17:04.
Jul 12 09:17:04 purple1-node1-ps pgpool[14317]: starting health checking
Pgpool main process set timer at 09:17:14 because you set
health_check_timeout 10. This time the health check successfully
completed. The timer for 09:17:14 is blocked by calling
signal(SIGALRM, SIG_IGN).
Unfortunately child life time was expired at 09:17:14 and pgpool main
process was busy at the time because of this.
Jul 12 09:17:14 purple1-node1-ps pgpool[16789]: child life 300 seconds expired
Jul 12 09:17:14 purple1-node1-ps pgpool[14317]: reap_handler called
Jul 12 09:17:14 purple1-node1-ps pgpool[14317]: starting health checking
Pgpool main re-enabled the timer and reset the timer variable
(health_check_timer_expired = 0). But when the timer re-enabled, the
signal handler for the timer set health_check_timer_expired to 1. As
a result pgpool thought that health check timer was expired.
Jul 12 09:17:14 purple1-node1-ps pgpool[14317]: health_check: health check timer has been already expired before attempting to connect to 0 th backend
Thus failover happend even if the backend was running fine.
--------------------------------------------------------------------------------
To fix the problem new macro CLEAR_ALARM, which calls alarm(0) until
all pending alarms are cleared, is defined and used whenever necessary
to cancel health check timer. Also before forking off child process
health_check_timer_expire is explicitely cleared.
Also this causes the error message.
Jul 12 09:32:14 purple1-node1-ps pgpool[11465]: connect_inet_domain_socket_by_port: health check timer expired
Process 11465 is a child process and is not supposed to run into this
situation. This is caused because the global variable
"health_check_timer_expired" is set to 1 before the new child is
forked off after child_life_time expired is set to 1. This could if
SIGCHLD signal is received at the moment when the bug below happens.
To make sure this never happens in connect_inet_domain_socket_by_port
checks health_check_timer_expired only if it is a main process.
Tatsuo Ishii [Sat, 20 Jul 2013 03:34:37 +0000 (12:34 +0900)]
Fix bug reported in bug #62 (main process segfault).
The bug report showed main process died after the log:
Jun 22 10:23:20 pgpool[32629]: pool_read: read failed (Connection reset by peer)
Jun 22 10:23:20 pgpool[32629]: notice_backend_error: called from pgpool main. ignored.
Jun 22 10:23:20 pgpool[32629]: child_exit: called from pgpool main. ignored.
Jun 22 10:23:20 kernel: [
11850568.371509] pgpool[32629]: segfault at 6f0ff2 ip
00007fbd7ed9811f sp
00007fff27275f08 error 4 in libc-2.15.so[
7fbd7ec49000+1b5000]
This indicates that after reading from socket while health checking
failed, it tried to initiate failover by calling notice_backend_error,
which is not appropriate because that should be handled in the health
check logic. So it is ignored. So far so good. pool_read called
child_exit after that and again it was ignored. This is also
good. Problem is, it continued to run with undefined read length from
read(2). Finally pool_read call memmove with the undefined length to
update its internal buffer, which could cause segfault depending on
the value of the read length.
Fix is, after child_exit, return with -1 to indicate error was
happened. Also I fixed the code after pool_check_fd fails. Before it
just exits process, which is never good for pgpool main
process. Although I don't think the case ever happened because I never
saw single error report which showed the case.
Tatsuo Ishii [Sat, 20 Jul 2013 03:34:22 +0000 (12:34 +0900)]
Update JDBC driver version.
Yugo Nagata [Fri, 19 Jul 2013 05:23:58 +0000 (14:23 +0900)]
Add descriptions of pcp_watchdog_info to documents
Yugo Nagata [Tue, 16 Jul 2013 09:52:57 +0000 (18:52 +0900)]
Remove a FIXME comment
Yugo Nagata [Tue, 16 Jul 2013 09:40:34 +0000 (18:40 +0900)]
Remove a comment
Yugo Nagata [Tue, 16 Jul 2013 09:28:51 +0000 (18:28 +0900)]
Add pcp_watchdog_info command
pcp_watchdog_info displays pgpool-II watchdog's information.
Usage: pcp_watchdog_info [-d] timeout hostname port# username password [watchdogID]
-d, --debug : enable debug message (optional)
timeout : connection timeout value in seconds. command exits on timeout
hostname : pgpool-II hostname
port# : PCP port number
username : username for PCP authentication
password : password for PCP authentication
watchdogID : ID of a other pgpool to get information for
If omitted then get one's self information
Yugo Nagata [Tue, 16 Jul 2013 04:22:54 +0000 (13:22 +0900)]
Add a missing item to japanese release notes
Yugo Nagata [Tue, 16 Jul 2013 04:19:53 +0000 (13:19 +0900)]
Add a missing item to release notes
Yugo Nagata [Wed, 10 Jul 2013 04:55:21 +0000 (13:55 +0900)]
Add release notes of minor version up
Yugo Nagata [Mon, 8 Jul 2013 05:16:33 +0000 (14:16 +0900)]
Fix typos
Yugo Nagata [Mon, 8 Jul 2013 02:55:30 +0000 (11:55 +0900)]
Fix a typo
Yugo Nagata [Mon, 8 Jul 2013 01:23:25 +0000 (10:23 +0900)]
Fix to verify the backend node number in pcp_recovery_node
When an invalid number is used, null value is passed as an arguments
of recovery script, and this causes a malfunction. In especially,
rsync may delete unrelated files in basebackup scripts.
Yugo Nagata [Mon, 8 Jul 2013 01:18:50 +0000 (10:18 +0900)]
Add wait_for_pgpool_reload function
This avoids pgpool recovery before new backends information reloaded.
Yugo Nagata [Fri, 5 Jul 2013 05:57:27 +0000 (14:57 +0900)]
Add ssl_ca_cert and ssl_ca_cert_dir descriptions to the japanese document.
Yugo Nagata [Thu, 4 Jul 2013 04:06:15 +0000 (13:06 +0900)]
Move ssl_ca_cert and ssl_ca_cert_dir descriptons to the SSL section
Tatsuo Ishii [Wed, 3 Jul 2013 07:00:37 +0000 (16:00 +0900)]
Fix compile error on Mac OS/X
Patch contributed by Muhammad Usama.
Tatsuo Ishii [Tue, 2 Jul 2013 08:13:10 +0000 (17:13 +0900)]
Fix execute() in memory allocation logic when memqcache enabled.
When very long query string (>1024) supplied in extended query with
bind parameters, it fails to allocate enough memory.
Yugo Nagata [Tue, 2 Jul 2013 05:50:10 +0000 (14:50 +0900)]
Add a tess for the previous commit
Yugo Nagata [Tue, 2 Jul 2013 02:12:20 +0000 (11:12 +0900)]
Fix segmentation fault of child that occurs when startup packet has
no PostgreSQL user information.
When a startup packet has no PostgreSQL user specified, pgpool-II
terminated abnormally. You can reproduce it by
$ psql -p 9999 -U ''
If enable_pool_hba is on, a child process terminates by segmentation
fault. Otherwise if enable_pool_hba is off, the error message is
ERROR: pool_discard_cp: cannot get connection pool for user (null) database (null)
In both cases, psql terminates with no message on frontend.
To resolve it, if PostgreSQL user is not specified in startup packet,
the message as following is output to both log and frontend. This is
the same behavior as PostgreSQL.
FATAL: no PostgreSQL user name specified in startup packet
Tatsuo Ishii [Sun, 30 Jun 2013 08:25:45 +0000 (17:25 +0900)]
Add regression test for bug#63.
Tatsuo Ishii [Sun, 30 Jun 2013 08:05:04 +0000 (17:05 +0900)]
Fix memqcache segfaults reported in bug#63.
When a query executes and the query result is too large,
query_context->temp_cache is discarded the query result is not
committed to cache storage when the query completed. In extended query
mode, it is possible that the same query context is used for
subsequent bind/execute cycle through reusing the portal. Problem is,
query_context->temp_cache is already gone and a segfault is caused by
accessing the pointer. To fix this, when query_context->temp_cache is
discarded, set the pointer to NULL and whenever access
query_context->temp_cache, check it is NULL or not.
Tatsuo Ishii [Sat, 29 Jun 2013 09:21:33 +0000 (18:21 +0900)]
Fix pg_md5 command crash.
Fix contributed by Muhammad Usama(from [pgpool-hackers: 302])
While looking at the pgpool-II code I found a potential crash or stack
smash in pg_md5 utility.
The problem is update_pool_passwd() calls pg_md5_encrypt() function to get
the md5 password, and the password format generated by pg_md5_encrypt()
function is
"md5" followed by 32-hex digits, which sums up to 35 characters while the
host variable defined in update_pool_passwd() function to hold this
password can contain maximum 32 characters.
Tatsuo Ishii [Wed, 26 Jun 2013 09:50:01 +0000 (18:50 +0900)]
Add new regression test.
Tatsuo Ishii [Wed, 26 Jun 2013 09:48:23 +0000 (18:48 +0900)]
Fix comment.
Tatsuo Ishii [Wed, 26 Jun 2013 09:17:11 +0000 (18:17 +0900)]
Fix pgpool -m f stop" hang.
This is caused by unmanaged pgpool children remaining. This could
happen if multiple PostgreSQL are going down (or even starting pgpool,
without starting PostgreSQL can easily trigger this). Child calls
degenerate_backend_set() and it tries to aquire semaphore to write a
failover request. In this case the signal mask is set as well, thus
signals are never received. To fix this, kill pgpool children before
forking them.
Tatsuo Ishii [Wed, 26 Jun 2013 05:49:26 +0000 (14:49 +0900)]
Fix failover.sh to not cause shell error in certain cases.
If not all arguments are supplied (this could happen if no available
backend exists, for example), the script could fail.
Tatsuo Ishii [Wed, 26 Jun 2013 05:34:58 +0000 (14:34 +0900)]
Fix comment in create_failover_script() and create_follow_master_script().
Tatsuo Ishii [Tue, 25 Jun 2013 07:48:47 +0000 (16:48 +0900)]
Add regression test case for postgres_fdw.
Tatsuo Ishii [Tue, 25 Jun 2013 05:50:31 +0000 (14:50 +0900)]
Register pgpool_regclass in pg_catalog schema. This is necessary to
deal with clients which restricts schema search path to pg_catalog
only. Postgres_fdw is such a client.
Tatsuo Ishii [Tue, 25 Jun 2013 05:08:13 +0000 (14:08 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Yugo Nagata [Mon, 24 Jun 2013 09:08:42 +0000 (18:08 +0900)]
Fix to include rpm_installer into tar ball.
Yugo Nagata [Mon, 24 Jun 2013 08:57:31 +0000 (17:57 +0900)]
Remove unnecessary file copy
Yugo Nagata [Mon, 24 Jun 2013 08:56:17 +0000 (17:56 +0900)]
Fix paramater's name in pgpool.conf.sample*
Yugo Nagata [Mon, 24 Jun 2013 03:00:07 +0000 (12:00 +0900)]
trivial fix of document
Tatsuo Ishii [Sun, 23 Jun 2013 09:39:54 +0000 (18:39 +0900)]
Fix spelling error in debug message.
Yugo Nagata [Fri, 21 Jun 2013 12:45:24 +0000 (21:45 +0900)]
autoreconf
Yugo Nagata [Fri, 21 Jun 2013 12:43:09 +0000 (21:43 +0900)]
Prepare 3.3.0-beta1
Yugo Nagata [Fri, 21 Jun 2013 10:20:05 +0000 (19:20 +0900)]
Fix documents about the previous commit.
Yugo Nagata [Fri, 21 Jun 2013 10:14:55 +0000 (19:14 +0900)]
Fix not to bring up virtual IP when delegate_IP parameter is emply.
Yugo Nagata [Fri, 21 Jun 2013 07:53:36 +0000 (16:53 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Yugo Nagata [Fri, 21 Jun 2013 07:52:45 +0000 (16:52 +0900)]
Prepare 3.3.0-beta1
Yugo Nagata [Fri, 21 Jun 2013 05:57:49 +0000 (14:57 +0900)]
Fix not to check pgpools in down status in watchdog life checking
Tatsuo Ishii [Fri, 21 Jun 2013 02:24:21 +0000 (11:24 +0900)]
Add info about fix commit.
Yugo Nagata [Thu, 20 Jun 2013 04:46:29 +0000 (13:46 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Yugo Nagata [Thu, 20 Jun 2013 04:45:48 +0000 (13:45 +0900)]
Fix a typo
Tatsuo Ishii [Wed, 19 Jun 2013 06:26:52 +0000 (15:26 +0900)]
Add regression test suit.
This is just a starting point of tests and more tests should be added.
Tatsuo Ishii [Tue, 18 Jun 2013 06:11:56 +0000 (15:11 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Tatsuo Ishii [Tue, 18 Jun 2013 06:03:51 +0000 (15:03 +0900)]
Allow to load balancing in an explicit transaction in replication mode.
The condition to allow the load balancing is as follows:
1) replicate_select is off
2) writing functions are used
3) transaction isolation level is not serializable
4) no DML/DDL are issued in the transaction
Bambo Huang [Mon, 17 Jun 2013 09:12:19 +0000 (17:12 +0800)]
Chinese Manual for pgpool-II 3.3 is ready. Changed a lot about watchdog configuration.
Yugo Nagata [Mon, 17 Jun 2013 08:08:17 +0000 (17:08 +0900)]
Fix to igonre heatbeat signals from pgpool-II in down.
pgpool-II which is already in down should not send heatbeat
signals to other pgpools.
Yugo Nagata [Mon, 17 Jun 2013 07:28:25 +0000 (16:28 +0900)]
Fix not to bind sockets to network devices when pgpool-II doesn't has
root privilege.
SO_BINDTODEVICE socket option is used for binding sockets to network
devices and requires root privilege. However, this is not essential
for the lifecheck mechanism itself, so we use this function only when
pgpool-II has root privilege.
If pgpool-II has root privilege, log message says like;
wd_create_hb_recv_socket: bind receive socket to device :eth0
otherwise,
is_usable_bindtodevice: setsockopt(SO_BINDTODEVICE) requires root privilege
wd_create_hb_recv_socket: couldn't bind receive socket to device :eth0
Yugo Nagata [Mon, 17 Jun 2013 00:52:19 +0000 (09:52 +0900)]
Remove a unused variable
Yugo Nagata [Mon, 17 Jun 2013 00:47:16 +0000 (09:47 +0900)]
Add configuration of heartbeat_destination_port0.
Yugo Nagata [Mon, 17 Jun 2013 00:05:11 +0000 (09:05 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Yugo Nagata [Sun, 16 Jun 2013 23:07:40 +0000 (08:07 +0900)]
Fix to allow tow pgpool-II exist in a host when watchdog enabled
New parameter heartbeat_destination_port0 is added. This is a
destination port number for sending heartbeat signals, and usually
the same value of wd_heartbeat_port. If the port number is unusable
, for example, because there are two pgpool-IIs in a host,
heatbeat_destination_port0 must be defferent than wd_heartbeat_port.
Tatsuo Ishii [Sun, 16 Jun 2013 03:44:54 +0000 (12:44 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Tatsuo Ishii [Sun, 16 Jun 2013 03:43:23 +0000 (12:43 +0900)]
Add to create pgpool_reload script.
Bambo Huang [Sat, 15 Jun 2013 11:19:14 +0000 (19:19 +0800)]
Chinese manual for watchdog up to date.
Bambo Huang [Sat, 15 Jun 2013 05:33:10 +0000 (13:33 +0800)]
Add Chinese tutorial for watchdog.
Bambo Huang [Sat, 15 Jun 2013 03:22:23 +0000 (11:22 +0800)]
Add Chinese tutorial for memqcache
Bambo Huang [Sat, 15 Jun 2013 01:30:30 +0000 (09:30 +0800)]
Tutorial for Chinese update to date.
Bambo Huang [Fri, 14 Jun 2013 08:38:33 +0000 (16:38 +0800)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Bambo Huang [Fri, 14 Jun 2013 08:37:40 +0000 (16:37 +0800)]
Update Chinese manual to 3.3
Yugo Nagata [Fri, 14 Jun 2013 07:45:23 +0000 (16:45 +0900)]
delete the file
Yugo Nagata [Fri, 14 Jun 2013 07:40:06 +0000 (16:40 +0900)]
Remove unnecessary sources.
Yugo Nagata [Fri, 14 Jun 2013 07:30:34 +0000 (16:30 +0900)]
Merge branch 'master' of ssh://git.postgresql.org/pgpool2
Yugo Nagata [Fri, 14 Jun 2013 07:05:03 +0000 (16:05 +0900)]
Fix bugs in installer including the following:
- wrong watchdog settings
- wrong permission settings
- missing netmask information in pg_hba.conf
- missing comma in pgpool.conf
Fix to install pgpool to both of node 0 and node 1.
- install.sh must be executed in both nodes.
- This is nesessary for installing pgpool_regclass and
pgpool_recovery to both nodes.
- In installation on node 1, configuration information on node 0
is reused. The information is copied using scp. So, users need
not input the same information.
- Passwordless access over ssh is setup in install.sh automatically.
postgres user must exist in both server before installation.
Tatsuo Ishii [Thu, 13 Jun 2013 05:03:55 +0000 (14:03 +0900)]
Add "--no-stop" option.
This disables shutdown after completing setting up. Usefull when we
want to access right after pgpool_setup. Without this, we need to
execute startall and wait for pgpool-II comes up, which will take
several seconds.
Tatsuo Ishii [Wed, 12 Jun 2013 10:18:20 +0000 (19:18 +0900)]
Fix bug #58, fails to invalidate query cache.
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.
Tatsuo Ishii [Mon, 10 Jun 2013 04:57:54 +0000 (13:57 +0900)]
Update copyright year.
Tatsuo Ishii [Fri, 7 Jun 2013 12:39:14 +0000 (21:39 +0900)]
Replace sleep with psql loop to reduce wait time.
Tatsuo Ishii [Fri, 7 Jun 2013 08:29:05 +0000 (17:29 +0900)]
Previous commit broke replication mode case.
Tatsuo Ishii [Fri, 7 Jun 2013 05:41:16 +0000 (14:41 +0900)]
Speed up a little bit.
Instead of createing all of DB nodes initially, create data0 at first
start pgool. Then add standys to pgpool.conf and reload it. This
avoids sleeping after first failover(was 20 seconds).
Tatsuo Ishii [Fri, 7 Jun 2013 04:20:16 +0000 (13:20 +0900)]
Update copyright year.
Tatsuo Ishii [Wed, 5 Jun 2013 05:42:02 +0000 (14:42 +0900)]
Add license section.
Tatsuo Ishii [Wed, 5 Jun 2013 05:41:33 +0000 (14:41 +0900)]
Fix copyright year of license section.
Tatsuo Ishii [Thu, 30 May 2013 05:49:05 +0000 (14:49 +0900)]
Fix bug with do_query which causes hung in extended protocol.
When insert lock is enabled and pgpool_catalog.insert_lock exists,
pgpool-II looks for the row which matches the oid of the target
table. If non, pgpool-II will insert the row to obtain a row lock.
The bug was in the process looking for the row. If extended protocol
is used, pgpool-II was waiting for the row data forever which will
never come because there's no such a row in the table. The fix is when
"command complete" received, let pgpool-II regards as if "data row"
received. The bug was introduced when 3.2.1 was released. A
reproducable test case is provided by Karsten Düsterloh. See
[pgpool-general: 1684] for more details.