Merge pull request 'fix(nostr): log publish skips at WARNING instead of silently' (#54) from fix/publish-skip-logging into main
Some checks failed
lint.yml / Merge pull request 'fix(nostr): log publish skips at WARNING instead of silently' (#54) from fix/publish-skip-logging into main (push) Failing after 0s

Reviewed-on: #54
This commit is contained in:
padreug 2026-09-26 21:37:03 +00:00
commit d2b8550d7f
2 changed files with 21 additions and 4 deletions

View file

@ -32,9 +32,19 @@ async def publish_or_delete_nostr_event(event: Event, *, delete: bool = False) -
if signer is None: if signer is None:
# Wallet missing, account missing, unclassified row, or # Wallet missing, account missing, unclassified row, or
# ClientSideOnlySigner account (server can't sign for them). # ClientSideOnlySigner account (server can't sign for them).
# Soft-fail: skip the publish silently. The user can still # Soft-fail: the HTTP / payment flow that triggered this must
# publish kind-31922/31923 events client-side once we have # not break. The user can still publish kind-31922/31923
# that path. # events client-side once we have that path.
#
# Logged at WARNING, not debug: skipping the publish means the
# relay keeps serving whatever inventory it last saw, so the
# public ticket count silently stops tracking the DB. That has
# twice been discovered only by a human noticing a wrong number
# on a public page (aiolabs/events#35, #51).
logger.warning(
f"[EVENTS] No signer for wallet {event.wallet}, skipping "
f"NIP-52 {'delete' if delete else 'publish'} for event {event.id}"
)
return return
nostr_event = await publish_event_to_nostr( nostr_event = await publish_event_to_nostr(

View file

@ -172,7 +172,14 @@ async def publish_event_to_nostr(
Returns the published NostrEvent for metadata storage, or None on failure. Returns the published NostrEvent for metadata storage, or None on failure.
""" """
if not nostr_client: if not nostr_client:
logger.debug("[EVENTS] No NostrClient available, skipping publish") # WARNING, not debug: with no client the event is never queued, so
# the relay keeps serving stale inventory and nothing downstream
# can tell. At debug this skip is invisible at the INFO level
# instances actually run at (aiolabs/events#35, #51).
logger.warning(
"[EVENTS] No NostrClient, skipping NIP-52 "
f"{'delete' if delete else 'publish'} for event {event.id}"
)
return None return None
try: try: