You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey folks, I think there's a case of an unhandled exception that might lead to unexpectedly halting the oracle service. It doesn't look worrisome, so I'm reporting it publicly here for you to take a closer look.
Every time an oracle sends a tx (for example to submit report data), execution goes through check_and_send_transaction. This function then calls _sign_and_send_transaction. Which, after sending the raw transaction, waits for the transaction receipt callingwait_for_transaction_receipt.
The issue is that, as far as I understand from its documentation and code, wait_for_transaction_receipt throws a TimeExhausted exception after 120 seconds of polling for the receipt. This exception is not handled anywhere in the code of the oracle. My impression is that the oracle's code attempts to handle the case of not finding a receipt with this if statement, but I don't think that's the correct way of doing it, because it won't catch the exception.
If I'm following this correctly, then this would happen in the unlikely scenario of oracles trying to submit their txs when the network's is congested. In any case, feels like this exception could be handled in a safer way to make the code more robust.
I might be missing something here, so of course any thoughts welcome!
The text was updated successfully, but these errors were encountered:
Hey folks, I think there's a case of an unhandled exception that might lead to unexpectedly halting the oracle service. It doesn't look worrisome, so I'm reporting it publicly here for you to take a closer look.
Every time an oracle sends a tx (for example to submit report data), execution goes through
check_and_send_transaction
. This function then calls_sign_and_send_transaction
. Which, after sending the raw transaction, waits for the transaction receipt callingwait_for_transaction_receipt
.The issue is that, as far as I understand from its documentation and code,
wait_for_transaction_receipt
throws aTimeExhausted
exception after 120 seconds of polling for the receipt. This exception is not handled anywhere in the code of the oracle. My impression is that the oracle's code attempts to handle the case of not finding a receipt with this if statement, but I don't think that's the correct way of doing it, because it won't catch the exception.If I'm following this correctly, then this would happen in the unlikely scenario of oracles trying to submit their txs when the network's is congested. In any case, feels like this exception could be handled in a safer way to make the code more robust.
I might be missing something here, so of course any thoughts welcome!
The text was updated successfully, but these errors were encountered: