Обсуждение: Difference between terminate/cancel?

Поиск
Список
Период
Сортировка

Difference between terminate/cancel?

От
François Beausoleil
Дата:
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
Вложения

Re: Difference between terminate/cancel?

От
Kevin Grittner
Дата:
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


Re: Difference between terminate/cancel?

От
François Beausoleil
Дата:
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 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.

Oh, interesting! Now I understand better. Extracted like that, it's obvious what the difference is.

Thanks!
François
Вложения