El día 14 de abril de 2009 16:00, Alvaro Herrera
<[email protected]> escribió:
> Emanuel Calvo Franco escribió:
>> El día 14 de abril de 2009 15:46, Alvaro Herrera
>> <[email protected]> escribió:
>> >
>> > create or replace function pg_terminate_backend(int) returns int
>> > language plperlu as $$
>> > $pid = shift;
>> > $ret = kill TERM, $pid;
>> > elog WARNING, "could not send signal TERM to $pid: $!" unless $ret
>> > == 1;
>> > return $ret;
>> > $$;
>>
>> Vos sabes que hice esta función y no mata la sesión...
>
> Bueno, obviamente no es la misma función, porque la mía funciona :-) No
> estoy usando system(), que la hace muy lenta y algo peligrosa en mi
> opinión, sino una llamada kill() directamente.
>
> En todo caso lo de arriba no es más que un esbozo; falta agregar las
> protecciones para que la función no mate su propia sesión, y otra que
> sólo permita enviar señales a procesos backends.
>
Justo estaba pensando en eso hace un rato y estoy metiendo mano para
ver (después de ver porque no mata las sesiones ni mi función ni la
tuya :( ) si extiendo la funcionalidad y la hago más segura.
>> De todas maneras lo que se me ocurre que se puede crear el script y
>> llamarlo con la función system.
>
> Cada vez que veo a alguien escribiendo código con system() mi opinión es
> "ugh".
ok, sin system :)
Probé tu función en mi terminal y tampoco mata la sesión...
me llama la atención, si lo soluciono trataré de hacer algo
un poco más elegante y útil.
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net