Re: [BUGS] Postmaster can't stop with pg_ctl
Thank you for your reply. On Wed, 25 Apr 2007 10:22:25 -0400 Tom Lane [EMAIL PROTECTED] wrote: Alvaro Herrera [EMAIL PROTECTED] writes: takuya koide wrote: 4) send 'SIGSTOP' signal to postgres If you stop a process by SIGSTOP you must make it run again with SIGCONT. Otherwise it's just not processing signals, so it'll obviously not shut down. I don't think this is a bug. SIGSTOP is a debugging tool, which would be rendered nigh useless if the postmaster tried to override it automatically. So definitely NOTABUG in my opinion too. For end-user, Debugging is not important and daily working, too. So for developper, if PostgreSQL have a debug option, it seems that it is no problem. (When it is used debug option, it not shutdown as like current working) Thank you. Best Regards --- Takuya Koide NEC System Technologies, Ltd. ---(end of broadcast)--- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
[BUGS] Postmaster can't stop with pg_ctl
POSTGRESQL BUG REPORT Your name : Takuya Koide Your email address : koide-txa (at) necst (dot) nec (dot) co (dot) jp Category: runtime: back-end: Severity: serious Summary: Postmaster can't stop with pg_ctl System Configuration Operating System : Red Hat Enterprise Linux ES release 4 (Nahant Update 3) PostgreSQL version : PostgreSQL 8.2.4 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2) notice: I use following RPM packages. $ rpm -qa|grep -i postgresql postgresql-server-8.2.4-1PGDG postgresql-plperl-8.2.4-1PGDG postgresql-8.2.4-1PGDG postgresql-contrib-8.2.4-1PGDG postgresql-docs-8.2.4-1PGDG postgresql-plpython-8.2.4-1PGDG postgresql-test-8.2.4-1PGDG postgresql-libs-8.2.4-1PGDG postgresql-devel-8.2.4-1PGDG postgresql-pltcl-8.2.4-1PGDG Compiler used : gcc Hardware: - x86 Versions of other tools: -- Problem Description: I found that pg_ctl can't stop postmaster processes under some conditions. If PostgreSQL's process is abnormal condition (stall), I would like to stop PostgreSQL's process (and restart) with /etc/rc.d/init.d/postgresql But I couldn't stop its process. -- Test Case (reproduce procedures): - I can reproduce with following steps. 1) confirm current status. # ps axuw|grep -i postgres|grep -Ev 'grep|bash|su -' postgres 3507 0.1 1.0 21352 2800 ? S 18:48 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3509 0.0 0.2 11132 568 ? S 18:48 0:00 postgres: logger process postgres 3514 0.0 0.3 21352 844 ? S 18:48 0:00 postgres: writer process postgres 3515 0.0 0.2 12132 564 ? S 18:48 0:00 postgres: stats buffer process postgres 3516 0.0 0.2 11364 748 ? S 18:48 0:00 postgres: stats collector process 2) connect with psql command by postgres user $ id uid=26(postgres) gid=26(postgres) group=26(postgres) context=user_u:system_r:unconfined_t -bash-3.1$ psql template1 template1=# 3) re-confirm status # ps axuw|grep -i postgres|grep -Ev 'grep|bash|su -' postgres 3507 0.0 1.1 21352 2804 ?S18:48 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3509 0.0 0.2 11132 568 ? S 18:48 0:00 postgres: logger process postgres 3514 0.0 0.3 21352 852 ? S 18:48 0:00 postgres: writer process postgres 3515 0.0 0.2 12132 564 ? S 18:48 0:00 postgres: stats buffer process postgres 3516 0.0 0.3 11364 772 ? S 18:48 0:00 postgres: stats collector process postgres 3618 0.0 0.6 8476 1752 pts/3 S+ 18:54 0:00 psql template1 postgres 3619 0.0 0.8 22012 2124 ? S 18:54 0:00 postgres: postgres template1 [local] idle 4) send 'SIGSTOP' signal to postgres # kill -SIGSTOP 3619 # ps axuw|grep -i postgres|grep -Ev 'grep|bash|su -' postgres 3507 0.0 1.1 21352 2804 ?S18:48 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3509 0.0 0.2 11132 568 ? S 18:48 0:00 postgres: logger process postgres 3514 0.0 0.3 21352 852 ? S 18:48 0:00 postgres: writer process postgres 3515 0.0 0.2 12132 564 ? S 18:48 0:00 postgres: stats buffer process postgres 3516 0.0 0.3 11364 772 ? S 18:48 0:00 postgres: stats collector process postgres 3618 0.0 0.6 8476 1752 pts/3 S+ 18:54 0:00 psql template1 postgres 3619 0.0 0.8 22012 2124 ? T 18:54 0:00 postgres: postgres template1 [local] idle 5) try to stop PostgreSQL with normal method # /etc/rc.d/init.d/postgresql stop postgresql stopping service: [fail] 6) confirm status and confirm that PostgreSQL is not stop. (this is problem) # ps axuw|grep -i postgres|grep -Ev 'grep|bash|su -' postgres 3507 0.0 1.1 21352 2816 ? S 18:48 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3509 0.0 0.2 11132 568 ? S 18:48 0:00 postgres: logger process postgres 3514 0.0 0.3 21352 852 ? S 18:48 0:00 postgres: writer process postgres 3515 0.0 0.2 12132 564 ? S 18:48 0:00 postgres: stats buffer process postgres 3516 0.0 0.3 11364 772 ? S 18:48 0:00 postgres: stats collector process postgres 3618 0.0 0.6 8476 1752 pts/3 S+ 18:54 0:00 psql template1 postgres 3619 0.0 0.8 22012 2124 ? T 18:54 0:00 postgres: postgres template1 [local] idle 7) try to stop PostgreSQL with SIGINT signal. # kill -SIGINT 3507 8) confirm status
Re: [BUGS] Postmaster can't stop with pg_ctl
Thank you for your reply. On Wed, 25 Apr 2007 09:44:47 -0400 Alvaro Herrera [EMAIL PROTECTED] wrote: takuya koide wrote: 4) send 'SIGSTOP' signal to postgres # kill -SIGSTOP 3619 # ps axuw|grep -i postgres|grep -Ev 'grep|bash|su -' postgres 3507 0.0 1.1 21352 2804 ?S18:48 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 3509 0.0 0.2 11132 568 ? S 18:48 0:00 postgres: logger process postgres 3514 0.0 0.3 21352 852 ? S 18:48 0:00 postgres: writer process postgres 3515 0.0 0.2 12132 564 ? S 18:48 0:00 postgres: stats buffer process postgres 3516 0.0 0.3 11364 772 ? S 18:48 0:00 postgres: stats collector process postgres 3618 0.0 0.6 8476 1752 pts/3 S+ 18:54 0:00 psql template1 postgres 3619 0.0 0.8 22012 2124 ? T 18:54 0:00 postgres: postgres template1 [local] idle If you stop a process by SIGSTOP you must make it run again with SIGCONT. Otherwise it's just not processing signals, so it'll obviously not shut down. I don't think this is a bug. I am sorry lack of my talk about SIGSTOP. [assumed premise] I have performed PostgreSQL with third-party cluster system and have evaluated that if PostgreSQL's status become unusual, cluster system can stop PostgreSQL. So I have used SIGSTOP to create environment like this case. [result] This cluster system picked up stalled postgres process and tried to stop PostgreSQL with /etc/rc.d/init.d/postgresql. but pg_ctl colud not stop it. (I confirmed that cluster system perform /etc/rc.d/init.d/postgresql) [expectation] I expect that pg_ctl can stop PostgreSQL even if postgres processes or postgres process stalled. Thank you. Best Regards --- Takuya Koide NEC System Technologies, Ltd. ---(end of broadcast)--- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate