[SP-pm] Dynamic Unload

Blabos de Blebe blabos at gmail.com
Fri Jul 26 07:36:12 PDT 2013


Na verdade, não é pra trabalho. Hoje é feriado. :)

Ainda ruminando e culminando pra não usar unload() ...

Suponha ainda no cenário acima:

package Foo;

use Bar;

sub foo {
    Bar::bar();
}

package Bar;

sub bar {
    say 'hello';
}

Suponha arquivos separados (foi como eu testei).

#!perl


while(<>) {
    delete $INC{'Foo.pm'};
    load( 'Foo' );
    Foo::foo();
}

__END__

Alterar Bar.pm não vai fazer a menor diferença, pois o primeiro load('Foo')
carregou Bar.pm e ele nao vai ser recarregado.

Daí eu poderia fazer:

package Foo;

delete $INC{'Bar.pm'};
load( 'Bar' );
...
and so on...

Só funciona se todas as dependências forem carregadas dinamicamente também.
Não me parece muito saudável...

Hum, será que dá pra 'recursar' pela lista de dependências, tipo um
unload_tree('Foo')? Taí uma ideia pra um dia chuvoso...

[]'s




2013/7/26 Marcio Ferreira <marciodesouzaferreira em gmail.com>

> Uma coisa pra se atentar é "esquentar" o novo node antes de subir mais um
> com a atualização.
> E se houver um percentual na carga do balancer, começar aos poucos a
> redirecionar a carga. Isso claro, se não for um "hotfix".
>
> Só um adendo - por saber que você trabalha na EV, presumo que você esteja
> lidando com e-commerce -, um bom horário pra esse tipo de manutenção é por
> volta das 6 horas da manhã, onde o volume de compras é mais baixo. Mas
> quando seu deploy "reload" continuo estiver redondo, faça a qualquer
> horário do dia! Isso é sinal de qualidade do seu sistema. =)
>
>
> Em 26 de julho de 2013 10:53, Blabos de Blebe <blabos em gmail.com> escreveu:
>
> > Talvez você queira da uma olhada no Module::Refresh usado como um dos
>> plugins do Devel::REPL.
>>
>> Exato.
>>
>> Eu tava justamente olhando o Module::Refresh, especificamente nas subs
>> unload_module e unload_subs, que aparentemente faz o que eu quero. Limpa o
>> %INC e depois a tabela de símbolos.
>>
>> Na documentação do módulo Class::Refresh há algumas considerações sobre
>> Moose também, que eu não sei se vão se aplicar ao meu caso.
>>
>> Sim, dá pra fazer reload sem downtime conforme apontado pelo Cron e
>> Márcio e pragmaticamente, me parece ser a alternativa mais sã mesmo.
>>
>> Agora é mais curiosidade científica, pois por completude, se a gente pode
>> fazer load dinâmico, eu gostaria de ter um unload dinâmico.
>>
>> []'s
>>
>>
>> 2013/7/26 Gabriel Andrade <gabiruh em gmail.com>
>>
>>>
>>> On Jul 26, 2013, at 9:10 AM, Blabos de Blebe <blabos em gmail.com> wrote:
>>> >
>>> > Vocês poderiam apontar outros módulos que lidam com esse problema de
>>> forma segura, ou documentação mais específica onde eu possa entender melhor
>>> o processo?
>>>
>>> Talvez você queira da uma olhada no Module::Refresh usado como um dos
>>> plugins do Devel::REPL.
>>>
>>>
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130726/70e77cf2/attachment-0001.html>


More information about the SaoPaulo-pm mailing list