Site e banco de dados travado devido a bloqueio por transação

Problema

O sistema fica travado em uma página em branco com sinal de carregamento e no Server Status do PgAdmin é possível observar um comando SQL em transação preso no banco do LATROMI.

O comando SQL pode ser identificado através das colunas do Server Status no PgAdmin:

Coluna Valor esperado
Application Name LATROMI Web - Global.asax
Query O comando SQL será um SELECT, CREATE ou DROP de uma função cujo o nome inicie com “_tmp_upgrade_”.

Exemplo: DROP FUNCTION public._tmp_upgrade_20211209214452();

Causa

Sempre que existe uma atualização de estrutura de banco de dados disponível, o sistema baixa e aplica automaticamente.

Essa rotina de atualização é diferente da atualização dos programas, que podem ser evitadas desabilitando as atualizações automáticas. A atualização de banco de dados ocorre sempre para manter a compatibilidade entre o site e todas as instâncias do LATROMI Client que estão em execução, e que podem ou não estar mais atualizadas do que o site.

O problema no caso do travamento é que até a versão 3.5.343 do LATROMI Web a atualização do banco de dados ocorria em uma transação, dentro de uma conexão separada. Essa transação em alguns casos causava um bloqueio no sistema quando outra conexão tentava acessar as tabelas que estavam sendo atualizadas.

Solução

A solução definitiva deste problema estará disponível nas versões posteriores à 3.5.343 do LATROMI Web.

Para resolver o problema antes da atualização, siga os passos abaixo:

  1. Conecte-se ao servidor onde o site está hospedado.

  2. Pare o Pool de Aplicativos correspondente ao LATROMI Web no IIS.

  3. Elimine o processo do banco correspondente ao comando SQL da atualização que está preso.

  4. Inicie o Pool de Aplicativos parado anteriormente.

  5. Abra a página do site.

O problema estará resolvido se a página for carregada normalmente no navegador.

1 curtida