Closed wisley7l closed 1 year ago
Porém em alguns tests que realizei aqui, o pub/Sub retorna seguinte mensagem Exception from a finished function: Error: XXXX e acaba não realizando novas tentativas cry , tem algo mais que está errado, ou essa função para lancar o erro não se resolve dessa forma?
O log era o esperado mesmo. Rejeitar uma função sem catch dá um unhanded exception, e fatal error, até aí tudo certo, sobre não ter retentativa, você tá testando isso onde? Não é alguma limitação de conta talvez? 🤔
Tá dando erro aí no função do Pub/Sub mesmo né? Não na função HTTP do webhook do Tiny, certo? E como você forçou erro pra testar isso? 👀
Então os testes foram feitos isolados em uma conta que tenho do Firebase e uma conta q criei no tiny. Testei a importação e exportação e funcionam corretamente, e pra forcar o erro eu alterei a URL que bate a StoreApi
Para ser mais exato aqui: https://github.com/ecomplus/app-tiny-erp/blob/475fd038060e2ff9351b86765e27f5e1c2478ac5/functions/lib/integration/import-product.js#L151
Mudei o .json
, para .jso
, forcando um erro.
Não acredito que seja erro de HTTP, pois estava verificando apenas o log da Pub/Sub
Certo, e tem certeza que não teve retentativa? Tira um print dos logs no período próximo desse teste e joga aqui por favor, acho que vai facilitar ...
Não encerrou a função com erro, por isso não teve retentativa.
Tiveram logs da mesma execução na sequência, só bateu um console.error
da request que falhou:
https://github.com/ecomplus/app-tiny-erp/blob/master/functions/lib/integration/import-product.js#L163
https://github.com/ecomplus/app-tiny-erp/blob/master/functions/lib/integration/import-product.js#L197
Nem toda request nos processos de importação/exportação dão error throw, nem deveriam na verdade.
O catch
no importProduct
por exemplo seria útil somente em casos de rate limit ou algum erro 5xx de uma das APIs, um erro não mapeado ou um client error só deve ir pra log, sem colocá-lo de volta à fila (retentativa) porque nesse último caso os erros só seriam fixados depois de correção do código, ou seja, se eles resultassem em retentativa geraria um loop infinito.
O jeito mais fácil de você testar retentativa seria falhar o getAppData
na função da PubSub, ou então teria que ver em qual ponto a função de importação daria throw e portanto bateria o catch ali..
@leomp12 crie a sequinte função no lugar da
saveToQueue
Porém em alguns tests que realizei aqui, o pub/Sub retorna seguinte mensagem
Exception from a finished function: Error: XXXX
e acaba não realizando novas tentativas :cry: , tem algo mais que está errado, ou essa função para lancar o erro não se resolve dessa forma?