Ocorrência | |
---|---|
Implementação |
|
Informações adicionais |
|
Mudança de comportamento | O uso do lock nativo em transação automaticamente habilita um time-out de 5 segundos de espera pelo bloqueio de uma linha ou recurso no Banco de Dados – vide configuração LockTimeOut. No caso de dois processos tentando inserir registros com a mesma chave única dentro de processos transacionados, o processo que inseriu primeiro mantém o bloqueio do registro a inserir até que seja feito o commit ou rollback dessa transação, enquanto o segundo processo espera pelo commit ou rollback da primeira transação. Por default os bancos de dados esperam indefinidamente pelo encerramento da primeira transação, retornando erro de violação da chave única na segunda transação caso seja feito o commit da primeira transação. Quando utilizado o bloqueio no banco de dados, como existe um timeout por espera de bloqueio de registro, o banco deixa de esperar indefinidamente, e passa a retornar um erro de timeout de inserção na segunda transação, caso a primeira não seja efetivada ou cancelada em até 5 segundos para os bancos de dados MSSQL, MYSQL e POSTGRES. |