Skip to content

Commit 3091146

Browse files
committed
Update failed endpoints for exits log
Signed-off-by: cyc60 <avsysoev60@gmail.com>
1 parent 84654a4 commit 3091146

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/common/execution.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ async def check_hot_wallet_balance() -> None:
3434

3535
if hot_wallet_balance < hot_wallet_min_balance:
3636
logger.warning(
37-
'Wallet balance is too low. At least %s %s is recommended.',
37+
'Wallet %s balance is too low. At least %s %s is recommended.',
38+
hot_wallet.address,
3839
Web3.from_wei(hot_wallet_min_balance, 'ether'),
3940
symbol,
4041
)

src/exits/tasks.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
from web3.types import HexStr
88

99
from src.common.contracts import keeper_contract
10+
from src.common.exceptions import NotEnoughOracleApprovalsError
1011
from src.common.execution import get_oracles
1112
from src.common.metrics import metrics
1213
from src.common.typings import Oracles
13-
from src.common.utils import get_current_timestamp, is_block_finalized, log_verbose
14+
from src.common.utils import get_current_timestamp, is_block_finalized
1415
from src.config.settings import settings
1516
from src.exits.consensus import get_validator_public_keys
1617
from src.exits.execution import submit_exit_signatures
@@ -139,8 +140,14 @@ async def _update_exit_signatures(
139140
oracles_approval = await send_signature_rotation_requests(oracles, oracles_request)
140141
logger.info('Fetched updated signature for validators: count=%d', len(validators))
141142
break
142-
except Exception as e:
143-
log_verbose(e)
143+
except NotEnoughOracleApprovalsError as e:
144+
logger.error(
145+
'Failed to fetch oracle approvals. Received %d out of %d, '
146+
'the oracles with endpoints %s have failed to respond.',
147+
e.num_votes,
148+
e.threshold,
149+
', '.join(e.failed_endpoints),
150+
)
144151

145152
tx_hash = await submit_exit_signatures(oracles_approval)
146153
if not tx_hash:

src/exits/utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from sw_utils.decorators import retry_aiohttp_errors
1111
from web3 import Web3
1212

13+
from src.common.exceptions import NotEnoughOracleApprovalsError
1314
from src.common.typings import OracleApproval, Oracles, OraclesApproval
1415
from src.common.utils import format_error, process_oracles_approvals, warning_verbose
1516
from src.config.settings import (
@@ -32,6 +33,7 @@ async def send_signature_rotation_requests(
3233
random.shuffle(endpoints)
3334

3435
approvals: dict[ChecksumAddress, OracleApproval] = {}
36+
failed_endpoints: list[str] = []
3537
async with aiohttp.ClientSession() as session:
3638
for address, replicas in endpoints:
3739
try:
@@ -45,10 +47,14 @@ async def send_signature_rotation_requests(
4547
address,
4648
format_error(e),
4749
)
50+
failed_endpoints.extend(replicas)
4851
continue
4952
approvals[address] = response
50-
51-
return process_oracles_approvals(approvals, oracles.validators_threshold)
53+
try:
54+
return process_oracles_approvals(approvals, oracles.validators_threshold)
55+
except NotEnoughOracleApprovalsError as e:
56+
e.failed_endpoints = failed_endpoints
57+
raise
5258

5359

5460
# pylint: disable=duplicate-code

0 commit comments

Comments
 (0)