mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 23:38:49 +00:00
Improve sync error reporting
This commit is contained in:
@@ -467,17 +467,39 @@ class NostrClient:
|
|||||||
return None
|
return None
|
||||||
await self._connect_async()
|
await self._connect_async()
|
||||||
|
|
||||||
|
self.last_error = None
|
||||||
pubkey = self.keys.public_key()
|
pubkey = self.keys.public_key()
|
||||||
f = Filter().author(pubkey).kind(Kind(KIND_MANIFEST)).limit(3)
|
f = Filter().author(pubkey).kind(Kind(KIND_MANIFEST)).limit(3)
|
||||||
timeout = timedelta(seconds=10)
|
timeout = timedelta(seconds=10)
|
||||||
events = (await self.client.fetch_events(f, timeout)).to_vec()
|
try:
|
||||||
|
events = (await self.client.fetch_events(f, timeout)).to_vec()
|
||||||
|
except Exception as e: # pragma: no cover - network errors
|
||||||
|
self.last_error = str(e)
|
||||||
|
logger.error(
|
||||||
|
"Failed to fetch manifest from relays %s: %s",
|
||||||
|
self.relays,
|
||||||
|
e,
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
if not events:
|
if not events:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
for manifest_event in events:
|
for manifest_event in events:
|
||||||
result = await self._fetch_chunks_with_retry(manifest_event)
|
try:
|
||||||
if result is not None:
|
result = await self._fetch_chunks_with_retry(manifest_event)
|
||||||
return result
|
if result is not None:
|
||||||
|
return result
|
||||||
|
except Exception as e: # pragma: no cover - network errors
|
||||||
|
self.last_error = str(e)
|
||||||
|
logger.error(
|
||||||
|
"Error retrieving snapshot from relays %s: %s",
|
||||||
|
self.relays,
|
||||||
|
e,
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.last_error is None:
|
||||||
|
self.last_error = "Snapshot not found on relays"
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@@ -1162,6 +1162,16 @@ class PasswordManager:
|
|||||||
try:
|
try:
|
||||||
result = await self.nostr_client.fetch_latest_snapshot()
|
result = await self.nostr_client.fetch_latest_snapshot()
|
||||||
if not result:
|
if not result:
|
||||||
|
if self.nostr_client.last_error:
|
||||||
|
logger.warning(
|
||||||
|
"Unable to fetch latest snapshot from Nostr relays %s: %s",
|
||||||
|
self.nostr_client.relays,
|
||||||
|
self.nostr_client.last_error,
|
||||||
|
)
|
||||||
|
self.notify(
|
||||||
|
f"Sync failed: {self.nostr_client.last_error}",
|
||||||
|
level="WARNING",
|
||||||
|
)
|
||||||
return
|
return
|
||||||
manifest, chunks = result
|
manifest, chunks = result
|
||||||
encrypted = gzip.decompress(b"".join(chunks))
|
encrypted = gzip.decompress(b"".join(chunks))
|
||||||
@@ -1177,7 +1187,19 @@ class PasswordManager:
|
|||||||
):
|
):
|
||||||
logger.info("Local database synchronized from Nostr.")
|
logger.info("Local database synchronized from Nostr.")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Unable to sync index from Nostr: {e}")
|
logger.warning(
|
||||||
|
"Unable to sync index from Nostr relays %s: %s",
|
||||||
|
self.nostr_client.relays,
|
||||||
|
e,
|
||||||
|
)
|
||||||
|
if self.nostr_client.last_error:
|
||||||
|
logger.warning(
|
||||||
|
"NostrClient last error: %s", self.nostr_client.last_error
|
||||||
|
)
|
||||||
|
self.notify(
|
||||||
|
f"Sync failed: {self.nostr_client.last_error or e}",
|
||||||
|
level="WARNING",
|
||||||
|
)
|
||||||
finally:
|
finally:
|
||||||
if getattr(self, "verbose_timing", False):
|
if getattr(self, "verbose_timing", False):
|
||||||
duration = time.perf_counter() - start
|
duration = time.perf_counter() - start
|
||||||
|
Reference in New Issue
Block a user