interface: xmr.py allow startup with a busy daemon

This commit is contained in:
nahuhh 2024-11-27 04:15:33 +00:00
parent b1b00b5342
commit ad43ce4095

View file

@ -114,7 +114,7 @@ class XMRInterface(CoinInterface):
log_str: str = "" log_str: str = ""
have_cc_tor_opt = "use_tor" in chain_client_settings have_cc_tor_opt = "use_tor" in chain_client_settings
if have_cc_tor_opt and chain_client_settings["use_tor"] is False: if have_cc_tor_opt and chain_client_settings["use_tor"] is False:
log_str = " bypassing proxy (use_tor false for XMR)" log_str = f" bypassing proxy (use_tor false for {self.coin_name()})"
elif have_cc_tor_opt is False and is_private_ip_address(rpchost): elif have_cc_tor_opt is False and is_private_ip_address(rpchost):
log_str = " bypassing proxy (private ip address)" log_str = " bypassing proxy (private ip address)"
else: else:
@ -186,16 +186,19 @@ class XMRInterface(CoinInterface):
self.rpc_wallet("open_wallet", params) self.rpc_wallet("open_wallet", params)
# TODO Remove `refresh` after upstream fix to refresh on open_wallet # TODO Remove `refresh` after upstream fix to refresh on open_wallet
self.rpc_wallet("refresh") self.rpc_wallet("refresh")
except Exception: except Exception as e:
self._log.debug(f"Failed to open {self.coin_name()} wallet") if "no connection to daemon" in str(e):
self._log.debug(f"{self.coin_name()} {e}")
return # bypass refresh error to allow startup with a busy daemon
try: try:
# TODO Remove `store` after upstream fix to autosave on close_wallet # TODO Remove `store` after upstream fix to autosave on close_wallet
self.rpc_wallet("store") self.rpc_wallet("store")
self.rpc_wallet("close_wallet") self.rpc_wallet("close_wallet")
self._log.debug(f"Attempt to save and close {self.coin_name()} wallet") self._log.debug(f"Attempt to save and close {self.coin_name()} wallet")
except Exception as e: except Exception as e:
self._log.debug(f"{self.coin_name()}: {e}")
pass pass
self.rpc_wallet("open_wallet", params) self.rpc_wallet("open_wallet", params)
# TODO Remove `refresh` after upstream fix to refresh on open_wallet # TODO Remove `refresh` after upstream fix to refresh on open_wallet
self.rpc_wallet("refresh") self.rpc_wallet("refresh")