[SP-pm] Dynamic Unload

Tiago Peczenyj tiago.peczenyj at gmail.com
Fri Jul 26 06:23:00 PDT 2013


Fico curioso ao fazer isso com um modulo que tenha codigo nativo/XS


2013/7/26 Renato Santos <renato.cron at gmail.com>

> Hmm
>
> Se fosse uma aplicação tipo REST você poderia criar o processo com as
> novas mudanças e depois matar o processo desatualizado e passar o trabalho
> só pro novo.
>
> Isso não é exatamente um reload, mas é o mais seguro que se pode fazer
> Em 26/07/2013 09:11, "Blabos de Blebe" <blabos at gmail.com> escreveu:
>
>>  Oi pessoal,
>>
>> Ultimamente eu tenho brincado com carregamento dinâmico e surgiu a
>> necessidade de fazer um "reload" de módulos que eu carreguei dinamicamente,
>> pois eu quero subir uma versão atualizada de um módulo sem reiniciar a
>> aplicação.
>>
>> Suponham o seguinte cenário de teste:
>>
>> while(<>) {
>>     reload( 'Foo::Bar' );
>>     say Foo::Bar::hello();
>> }
>>
>> Atualmente, eu uso um módulo que faz o load(), então para completar o
>> "reload" eu preciso fazer o "unload":
>>
>> sub reload {
>>     my $module = shift;
>>
>>     unload( $module );
>>     load( $module );
>> }
>>
>> Para isso eu dei uma olhada no cpan e encontrei o módulo Class::Unload,
>> mas infelizmente o exemplo que ele tem na sinopse não funciona no meu
>> cenário.
>>
>> Pesquisando um pouco mais eu encontrei os seguinte código:
>>
>> sub unload {
>>     my $module = shift;
>>     my $filename = to_filename( $module );
>>     delete $INC{ $filename };
>> }
>>
>> Esse código faz com que a cada passo do loop o módulo 'Foo::Bar' seja
>> carregado, e as alterações no seu fonte sejam visíveis na aplicação,
>> atingindo o meu objetivo.
>>
>> Entretanto, essa solução está me cheirando a gambiarra. Eu estou
>> preocupado com memory leaks e coisas do gênero, pois pretendo utilizar esse
>> "reload" em uma aplicação que teoricamente rodaria indefinidamente.
>>
>> 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?
>>
>> Mais do que uma solução para o meu cenário, eu estou procurando entender
>> melhor o processo.
>>
>> []'s
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at 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 at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130726/af94d98e/attachment.html>


More information about the SaoPaulo-pm mailing list