Обсуждение: How to disconnect a single user in Postgresql 8.2.5 from a database

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

How to disconnect a single user in Postgresql 8.2.5 from a database

От
Steph L
Дата:
How to disconnect a single user in Postgresql 8.2.5 from a database ?

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Sergey Konoplev
Дата:
On 19 April 2010 15:27, Steph L <engel306sl@yahoo.fr> wrote:
>
> How to disconnect a single user in Postgresql 8.2.5 from a database ?

AFAIK the only way is to upgrade to 8.4 and use pg_terminate_backend():
http://www.postgresql.org/docs/8.4/interactive/functions-admin.html

--
Sergey Konoplev

Blog: http://gray-hemp.blogspot.com /
Linkedin: http://ru.linkedin.com/in/grayhemp /
JID/GTalk: gray.ru@gmail.com / Skype: gray-hemp / ICQ: 29353802

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Josh Kupershmidt
Дата:
On Mon, Apr 19, 2010 at 11:52 AM, Sergey Konoplev <gray.ru@gmail.com> wrote:
> On 19 April 2010 15:27, Steph L <engel306sl@yahoo.fr> wrote:
>> How to disconnect a single user in Postgresql 8.2.5 from a database ?
> AFAIK the only way is to upgrade to 8.4 and use pg_terminate_backend():
> http://www.postgresql.org/docs/8.4/interactive/functions-admin.html

pg_terminate_backend() is just a SQL wrapper around:
   kill -SIGTERM [backend PID]

For versions before 8.4: if you can SSH in to the server, run the
above on the PID of the backend your user is connected to, and that
should terminate their connection.

Josh

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Tom Lane
Дата:
Josh Kupershmidt <schmiddy@gmail.com> writes:
> pg_terminate_backend() is just a SQL wrapper around:
>    kill -SIGTERM [backend PID]

> For versions before 8.4: if you can SSH in to the server, run the
> above on the PID of the backend your user is connected to, and that
> should terminate their connection.

The reason the function isn't there before 8.4 is that that's not
promised to work before 8.4 ... most of the time it will work, but
once in awhile you could get nasty side-effects.

            regards, tom lane

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Scott Marlowe
Дата:
On Mon, Apr 19, 2010 at 8:10 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Josh Kupershmidt <schmiddy@gmail.com> writes:
>> pg_terminate_backend() is just a SQL wrapper around:
>>    kill -SIGTERM [backend PID]
>
>> For versions before 8.4: if you can SSH in to the server, run the
>> above on the PID of the backend your user is connected to, and that
>> should terminate their connection.
>
> The reason the function isn't there before 8.4 is that that's not
> promised to work before 8.4 ... most of the time it will work, but
> once in awhile you could get nasty side-effects.

So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
always work then, right?

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Tom Lane
Дата:
Scott Marlowe <scott.marlowe@gmail.com> writes:
> On Mon, Apr 19, 2010 at 8:10 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> The reason the function isn't there before 8.4 is that that's not
>> promised to work before 8.4 ... most of the time it will work, but
>> once in awhile you could get nasty side-effects.

> So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
> always work then, right?

No, I didn't say that.

            regards, tom lane

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Lewis Kapell
Дата:
pg_cancel_backend() and pg_terminate_backend() do different things.
 From the documentation:

pg_cancel_backend(pid int)    Cancel a backend's current query
pg_terminate_backend(pid int)    Terminate a backend



On 4/19/2010 11:07 PM, Scott Marlowe wrote:
> On Mon, Apr 19, 2010 at 8:10 PM, Tom Lane<tgl@sss.pgh.pa.us>  wrote:
>> Josh Kupershmidt<schmiddy@gmail.com>  writes:
>>> pg_terminate_backend() is just a SQL wrapper around:
>>>     kill -SIGTERM [backend PID]
>>
>>> For versions before 8.4: if you can SSH in to the server, run the
>>> above on the PID of the backend your user is connected to, and that
>>> should terminate their connection.
>>
>> The reason the function isn't there before 8.4 is that that's not
>> promised to work before 8.4 ... most of the time it will work, but
>> once in awhile you could get nasty side-effects.
>
> So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
> always work then, right?
>


Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Scott Marlowe
Дата:
On Tue, Apr 20, 2010 at 7:31 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Scott Marlowe <scott.marlowe@gmail.com> writes:
>> On Mon, Apr 19, 2010 at 8:10 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> The reason the function isn't there before 8.4 is that that's not
>>> promised to work before 8.4 ... most of the time it will work, but
>>> once in awhile you could get nasty side-effects.
>
>> So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
>> always work then, right?
>
> No, I didn't say that.

Well, my experience with it has been that it's similar and it doesn't
always work.

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Scott Marlowe
Дата:
Ahhh, ok.

On Tue, Apr 20, 2010 at 7:52 AM, Lewis Kapell <lkapell@setonhome.org> wrote:
> pg_cancel_backend() and pg_terminate_backend() do different things. From the
> documentation:
>
> pg_cancel_backend(pid int)      Cancel a backend's current query
> pg_terminate_backend(pid int)   Terminate a backend
>
>
>
> On 4/19/2010 11:07 PM, Scott Marlowe wrote:
>>
>> On Mon, Apr 19, 2010 at 8:10 PM, Tom Lane<tgl@sss.pgh.pa.us>  wrote:
>>>
>>> Josh Kupershmidt<schmiddy@gmail.com>  writes:
>>>>
>>>> pg_terminate_backend() is just a SQL wrapper around:
>>>>    kill -SIGTERM [backend PID]
>>>
>>>> For versions before 8.4: if you can SSH in to the server, run the
>>>> above on the PID of the backend your user is connected to, and that
>>>> should terminate their connection.
>>>
>>> The reason the function isn't there before 8.4 is that that's not
>>> promised to work before 8.4 ... most of the time it will work, but
>>> once in awhile you could get nasty side-effects.
>>
>> So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
>> always work then, right?
>>
>
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
>



--
When fascism comes to America, it will be intolerance sold as diversity.

Re: How to disconnect a single user in Postgresql 8.2.5 from a database

От
Tom Lane
Дата:
Scott Marlowe <scott.marlowe@gmail.com> writes:
> On Tue, Apr 20, 2010 at 7:31 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Scott Marlowe <scott.marlowe@gmail.com> writes:
>>> So, pg_cancel_backend(pid) is the 8.3 version, that may or may not
>>> always work then, right?
>>
>> No, I didn't say that.

> Well, my experience with it has been that it's similar and it doesn't
> always work.

pg_cancel_backend might or might not always succeed in canceling a
query, if that's what you mean.  What I'm worried about with SIGTERM'ing
an individual backend is negative side-effects, like hanging the entire
database.  Before 8.4 there was never any attempt to ensure that that
would work nicely, and if memory serves we did find some problems when
we tested it.

            regards, tom lane