Executando verificação de segurança...
3

Como o colega acima mencionou as informações que você passou talvez não sejam suficientes pra te ajudar, mas vou tentar dar um palpite com base em experiências que já tive.

Lock no Banco de Dados

A maioria dos bancos de dados possui um sistema de "lock", que é basicamente um mecanismo de segurança para previnir conflitos quando dois recursos tentam atualizar a mesma linha no banco de dados.

Quando você vai executar uma query no banco ele inicia uma transaction, tudo o que você fizer dentro daquela transaction só é finalizado quando a transaction é "commitada", ou seja, quando você ativamente diz que terminou de fazer o que queria com aquela linha no banco de dados.

Neste caso, após fazer o commit da transação outra transação é permitida acessar aquela(s) linha(s) no banco. Até lá essa transaction fica esperando (ou seja, rodando infinitamente caso não haja uma configuração de timeout para lock) até o recurso ser liberado.

Geralmente não temos problema com isso porque a maioria dos frameworks fazem esse gerenciamento automaticamente, além disso dependendo do sistema que você está desenvolvendo você pode experimentar um menor número de concorrências (tentativas de manipular as mesmas linhas no banco de dados por diferentes threads ou serviços), tem também o fato de que geralmente essas consultas são rápidas então os conflitos são menores.

Transação aberta

Pode acontecer, porém de algum problema em um módulo desenvolvido, as vezes uma Exception ou um erro sistêmico, um erro em uma lib ou framework ou um problema de design no código, causar um lock no sistema;

Ou seja, algum recurso fez uma query nesta tabela, não conseguiu fechar (fazer commit ou rollback) na transaction e ficou "segurando" as linhas dessa tabela, não permitindo assim que você faça nada nessa tabela até que a transaction seja liberada.

Como resolver?

Se meu palpite (lembrando que é só um palpite rs) estiver correto, você precisará ou indentificar a aplicação que está fazendo alteração nessa tabela e reiniciar ela, ou aplicar um algum comando (esse comando vai depender do tipo de banco de dados que você está usando) que possa "derrubar" todas as transações ativas.

Vou deixar aqui alguns materiais que podem te ajudar a entender melhor como funciona o lock, espero que te ajude.

Fonte:

https://retool.com/blog/isolation-levels-and-locking-in-relational-databases

https://medium.com/@hnasr/postgres-locks-a-deep-dive-9fc158a5641c

https://codecurated.com/blog/understanding-database-locks-managing-concurrency-in-databases/

Carregando publicação patrocinada...
1
1