l10n-brazil icon indicating copy to clipboard operation
l10n-brazil copied to clipboard

[14.0][BUG] Erros de concorrencia ao transmitir documento fiscais.

Open antoniospneto opened this issue 1 year ago • 15 comments

Ao transmitir uma NF-e às vezes acontece de falhar, da erro de concorrência no acesso ao banco de dados:

2023-08-11 13:56:01,576 1 ERROR devel odoo.sql_db: bad query: UPDATE "res_partner" SET "write_uid"=61,"write_date"=(now() at time zone 'UTC') WHERE id IN (1, 89085) ERROR: could not serialize access due to concurrent update

2023-08-11 13:56:01,577 1 ERROR devel odoo.sql_db: bad query: UPDATE "res_partner" SET "write_uid"=61,"write_date"=(now() at time zone 'UTC') WHERE id IN (1, 89085) ERROR: could not serialize access due to concurrent update

Mesmo que a gente enfileire o envio das NF-e (transmissão para Sefaz) ainda tem o risco disso acontecer, pois o modelo res_partner pode estar sendo acessado por outras partes do sistema, pode acontecer com outros modelos também, a ORM desencadeia muitas chamadas ao banco de dados...

Por esse ser um processo bem crítico, perder essas informações dá bastante dor de cabeça para a empresa e para quem está prestando suporte.

Minha sugestão é que para esse processo crítico é deixar de usar qualquer chamada para ORM do Odoo, seja leitura ou gravação, a gente sabe que a ORM facilita bastante o processo, mas ela tende a engorda muito as chamas ao banco de dados, é só ativar os logs que vai ver a imensidão de QUERIES geradas, isso não é legal para um processo crítico como esse.

Fazer com que dentro do método _eletronic_document_send() seja utilizada apenas queries SQL bem restritas feito a mão.

@mileo @felipezago@ygcarvalh, vocês que estão implementando a NFC-e acho que o problema com isso vai ser ainda maior pra vocês, não ?

O que acham ?

cc @rvalyi @marcelsavegnago @renatonlima @felipemotter

antoniospneto avatar Aug 11 '23 14:08 antoniospneto