Ou entao adiciona um novo nó no balancer com a atualização e vai "renovando node por node" (de modo automático por favor) sem downtime algum da app.
Em 26 de julho de 2013 10:17, Renato Santos <[email protected]>escreveu: > 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" <[email protected]> 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: [email protected] >> 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
