Primeiro a situação
Estaremos fazendo aqui um passo-a-passo da situação para que você entenda o problema, e nas próximas ocasiões, evite que a mesma ocorra e atrapalhe a vida dos demais desenvolvedores do projeto.A causa do incomodo é que os objetos possuem um número do tipo GUID que é randômico e designado automaticamente pelo Gx para cada novo objeto criado, como, por exemplo, na Imagem abaixo e seu GUID associado (f5a88c30-db5b-012e-3dd2-1231380f2e23), que nesse exemplo se encontra perfeitamente sincronizada entre o GxServer e as máquinas dos Desenvolvedores 1 e 2.
1) Remoção do objeto
O problema ocorre quando a imagem é removida por certo Desenvolvedor, (o Desenv 2, no nosso exemplo) e que em seguida publica o ajuste no GxServer, com o commit. Se o Desenv1 não realizar o update do seu projeto, a imagem antiga ficará em sua kb e poderá ocorrer o erro.
2) Criação de outra imagem com o mesmo nome
Antes que o Desenvolvedor 1 realize o update de sua kb, o Desenvolvedor 2, apressadinho, criou um novo objeto e chamou-o com o mesmo nome do anterior removido (Imagem) e novamente subiu ao servidor, com o commit. O GeneXus criou um novo GUID para esse novo objeto, e o que temos é o nome do antigo, mas com identificadores diferentes.
3) Tentativa frustrada de atualização
Para completar a tragédia o Desenvolvedor 1, um dia acordou de seu sono profundo, e resolveu atualizar sua kb com o gxServer. O que aconteceu? Erro!
Ao tentar sincronizar a sua kb, o Desenvolvedor 1 recebe uma mensagem de erro no objeto Imagem devido a diferença de GUID de sua maquina e a do GxServer, uma vez que são elementos completamente distintos. Quem causou a situação, o Desenvolvedor 2, encontra-se tranquilo e nem percebe a tragédia, acho que até eu ouvi ele dizer 'aqui na minha máguina não tem problema, tá tudo certo!'
Agora a correção
Para que essa situação possa ser corrigida é necessário que o Desenvolvedor 2, (causador da lambança), saia de sua zona de conforto e suba uma correção para o GxServer renomeando a Imagem para qualquer outro nome, como Imagem1, por exemplo.Essa situação ilustra bem a necessidade de comunicação e treinamento da equipe de desenvolvimento, principalmente nos termos de conduta do projeto, e talvez o primeiro item a ser registrado nesse termo seria:
Apagar um objeto e criar outro com o mesmo nome... Melhor não.
2 comentários:
Legal, excelente dica prof. Douglas!
Valeu Bruno!
Postar um comentário