Difference between terminate/cancel?
Hi!
What is the difference between both? cancel sends QUIT while terminate sends TERM, but what effect does this have on the backends, shared memory, etc?
I had some processes stuck in IDLE in transaction after a machine died (through pgbouncer), and cancel did not close the connections, while terminate did kill the transactions.
The docs at http://www.postgresql.org/docs/9.1/static/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE do name the signals, but I can't find other documentation on the effects of TERM/QUIT (I'm on 9.1, but devel says the same thing).
Are there pointers in the docs on the differences?
Thanks!
François
Attachments:
François Beausoleil <francois@teksol.info> wrote:
What is the difference between both?
I had some processes stuck in IDLE in transaction after a machine
died (through pgbouncer), and cancel did not close the
connections, while terminate did kill the transactions.
The docs at
http://www.postgresql.org/docs/9.1/static/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE
[...]
According to the docs you cite:
pg_cancel_backend(): Cancel a backend's current query
pg_terminate_backend(): Terminate a backend
A connection which is idle or idle in transaction does not have a
current query to cancel, but it has a backend process which can be
terminated.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
Le 2013-08-13 à 13:25, Kevin Grittner a écrit :
François Beausoleil <francois@teksol.info> wrote:
What is the difference between both?
I had some processes stuck in IDLE in transaction after a machine
died (through pgbouncer), and cancel did not close the
connections, while terminate did kill the transactions.The docs at
http://www.postgresql.org/docs/9.1/static/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE
[...]According to the docs you cite:
pg_cancel_backend(): Cancel a backend's current query
pg_terminate_backend(): Terminate a backendA connection which is idle or idle in transaction does not have a
current query to cancel, but it has a backend process which can be
terminated.
Oh, interesting! Now I understand better. Extracted like that, it's obvious what the difference is.
Thanks!
François