logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Administrando: Substituindo um arquivo que está sendo usado

Um problema muito comum quando precisamos atualizar um arquivo em um servidor (geralmente DLLs) é o seguinte:

Temos duas soluções óbvias nesse caso:

  • Dar um boot no servidor e trocar o arquivo na volta do boot. Além de não funcionar algumas vezes (como na existência de um serviço que sobe no boot e usa o arquivo), em outras vezes não é possível (dar boot em um servidor de produção 3 da tarde?).
  • Renomear o arquivo atual e copiar o novo. Apesar de funcionar, não faz com que os programas que usam o arquivo o recarreguem.

O que causa esse problema é que muitas vezes não sabermos quem está usando o arquivo. Caso nosso arquivo seja uma DLL de um componente COM in process (DLL que é carregada no processo usuário) é praticamente impossível saber quem o carrega. Ou melhor, é impossível descobrir isso sem a ferramenta certa.

Caso seja um componente COM+ configurado como Server Application (ou seja, sua DLL é carregada em um dllhost.exe), é só mandar um shutdown no pacote e trocar a DLL. Mas apesar dessa facilidade, nem todos podem usá-la, já que isso aumenta o overhead do marshalling entre o processo usuário e o dllhost.exe. Além, é claro, de todas aquelas configurações de segurança.

E a solução do nosso problema, como sempre, passa por www.sysinternals.com. Baixe o Process Explorer, que é um substituto vitaminado para o Task Manager (Gerenciador de Tarefas) que existe no Windows. Dentre todas as informações que ele mostra sobre os processos, está também a lista de handles abertos (os de arquivos inclusive) e DLLs carregadas:

Apesar de bastante interessante, esse recurso não ajuda muito já que você precisa olhar em todos os processos. Até que fala mais alto seu instinto de usuário Microsoft e você tecla CTRL+F. Tudo resolvido:

Resolvido. Agora você sabe quais são os processos que estão usando o arquivo que você precisa trocar. Você pode até dar um kill no processo sem sair do Process Explorer :-)

PS: Quem acha que seria interessante se eu escrevesse sobre COM e COM+ levante a mão.


Em 11/04/2007 18:44, por Rodrigo Strauss


  
 
 
Comentários
Tomás | website | e-mail | em 11/04/2007 | #
Mão pra cima
César | em 11/04/2007 | #
Mão pra cima
Tiago Albineli Motta | website | em 11/04/2007 | #
Mão levantada
Rodrigo Strauss | website | em 11/04/2007 | #
Uau. A Microsoft sempre diz que COM é legado, achei que ninguém mais usava ou se interessava.

Com licença: hehehahahahehaheha :-)
William Rodrigues | em 12/04/2007 | #
Salve!
Opa! eu também quero...

braços erguidos!!!
Maicon | em 12/04/2007 | #
em pé....ops..

mãos pra cima...

Tomás | website | e-mail | em 17/04/2007 | #
Pode estar em desuso mas não deixa de ser uma boa idéia, tanto que a fundação Mozilla criou o XPCOM que é utilizado no Firefox e em outros produtos da fundação.....
Rodrigo Strauss | website | em 17/04/2007 | #
"Pode estar em desuso"

Não, não está. A Microsoft tenta criar esse clima para forçar todo mundo a migrar para .NET. Isso não é teoria da conspiração, a política deles é clara, veja em http://www.microsoft.com/com
Francismar A. Silva | website | em 20/04/2007 | #
Oi
As especificações versão 2.05a para OPC utilizam COM.
Esta é a versão mais utilizada no mundo, pois temos a opção dotNET.

[ ]'s
Rodrigo Strauss | website | em 20/04/2007 | #
¿
Francismar A. Silva | website | em 20/04/2007 | #
"Uau. A Microsoft sempre diz que COM é legado, achei que ninguém mais usava ou se interessava."

Apenas citei um exemplo de uso de COM.

[ ]'s
Rodrigo Strauss | website | em 20/04/2007 | #
Ah tá. Foi uma brincadeira, um monte de gente ainda usa COM hoje em dia, mesmo com a Microsoft pressionando para que seja feita a migração para .NET.
Marcos Velasco | website | e-mail | em 23/04/2007 | #
Existe um programinha bem legal chamado "Unlocker":
http://ccollomb.free.fr/unlocker/

Ele é freeware e ajuda bastante na hora de "destravar" estes arquivos em uso...

Abraços
Marcos
Rodrigo Strauss | website | em 23/04/2007 | #
Legal Marcos, obrigado!
marconate | website | em 28/11/2007 | #
maos p cima...

esse post eh bem antigo, sera q conta?
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::