Lidando com erros internos

Dizemos que ocorreu um erro interno quando uma requisição não pôde ser processada devido a alguma falha do serviço oferecido, podendo a falha ser temporária ou não. Ou seja, o erro não foi causado devido a qualquer característica da requisição montada pelo cliente.

A resposta de uma requisição com erro interno é caracterizada por um status code 500 e um corpo de resposta seguindo a estrutura do seguinte exemplo:

{
 "titulo":"Erro Interno",
 "dataHora":"2022-04-12T08:41:50.958945",
 "detalhe":"Ocorreu um erro inesperado, tente mais tarde. 
           Se o erro persistir, contate o administrador do sistema informando o id de rastreabilidade: 09bafee3fef94776a4882a309f18f252.",
 "logIdRastreabilidade":"09bafee3fef94776a4882a309f18f252",
 "mensagemParaUsuarioFinal":"Ocorreu um erro inesperado, tente mais tarde. 
           Se o erro persistir, contate o administrador do sistema informando o id de rastreabilidade: 09bafee3fef94776a4882a309f18f252."
}
	

O que operador deve fazer ao receber um erro interno?

Muitos erros internos são causados por falhas de integração transitórias. Por isso, a primeira ação é tentar repetir a requisição. Muito provavelmente funcionará. Por isso, é importante que o sistema integrador dê clareza ao operador sobre essa situação, assim como permitir o reenvio da requisição.

Caso novas tentativas ainda ocasionem erros internos, o operador deve acionar o Suporte Serpro. É importante, ao acionar o Serpro, informar a data-hora da requisição e o logIdRastreabilidade. Note que erros de negócio (status code 422) não deveriam gerar acionamentos. Além disso, erros 400 normalmente implicam numa falha de codificação no sistema integrador (cliente do Renave-WS).

Tipicamente o campo mensagemParaUsuarioFinal retornado em um erro interno é nulo. Mas caso preenchido, deve ser exibido ao operador.

Inconsistências no estado do processo (assincronias)

Idealmente, a ocorrência de um erro interno deveria implicar em uma reversão completa da transação; ou seja, uma requisição que resultou em erro interno normalmente não deixará efeitos colaterais no sistema Renave. Contudo, devido a grande quantidade de integrações do sistema Renave, algumas requisições com erro interno podem causar inconsistências de dados (assincronias). Uma situação de inconsistência que pode acontecer, por exemplo, é o Detran enxergar um estoque que não existe para o estabelecimento.

Quando tais assincronias ocorrem, a recomendação é simplesmente reenviar a requisição. Se novos erros não acontecerem, os mecanismos de idempotência do Renave farão com que o processo convirja para um estado consistente. Nesse caso, é importante que a segunda requisição seja enviada com os mesmos dados enviados na primeira requisição. Por isso, é importante que o sistema integrador facilite para o operador o reenvio de requisições que resultaram em erro interno, mantendo os dados já utilizados na primeira requisição.

Outra situação que pode ocasionar inconsistência na base Renave são rajadas.