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

Responder a