anchorage_layer_simple/features/userwallet-timeouts-backoff.md
ncantu 6bf37be44e Cron restart services (bitcoind, mempool), service-login-verify, website-skeleton, docs
**Motivations:**
- Consigner l'état actuel du dépôt (cron, service-login-verify, website-skeleton, userwallet, docs).
- Centraliser les modifications en attente.

**Root causes:**
- N/A (commit groupé).

**Correctifs:**
- N/A.

**Evolutions:**
- Cron quotidien restart services : script local sans SSH, systemd (bitcoin-signet, bitcoin, APIs, dashboard, userwallet, website-skeleton) + Docker (mempool, bitcoin-signet-instance).
- Feature cron-restart-services-local : documentation et règle scripts locaux / pas d'SSH.
- service-login-verify : module vérification login (buildAllowedPubkeys, verifyLoginProof, nonceCache).
- website-skeleton : app iframe UserWallet, config, systemd unit.
- userwallet : collectSignatures, relay.
- docs : DOMAINS_AND_PORTS, README, WEBSITE_SKELETON ; features userwallet-contrat-login, timeouts-backoff, service-login-verify.

**Pages affectées:**
- data/restart-services-cron.sh, data/restart-services.log, data/sync-utxos.log
- features/cron-restart-services-local.md, features/service-login-verify.md, features/userwallet-contrat-login-reste-a-faire.md, features/userwallet-timeouts-backoff.md
- docs/DOMAINS_AND_PORTS.md, docs/README.md, docs/WEBSITE_SKELETON.md
- configure-nginx-proxy.sh
- service-login-verify/ (src, dist, node_modules)
- userwallet/src/utils/collectSignatures.ts, userwallet/src/utils/relay.ts
- website-skeleton/
2026-01-28 00:48:37 +01:00

1.8 KiB
Raw Blame History

UserWallet Timeouts réseau (3.1)

Author: Équipe 4NK
Date: 2026-01-26

Objectif

Timeouts sur les appels relay (X_RELAY_TIMEOUT). Pas de backoff.

Impacts

  • Relay : tous les fetch (GET /messages, /signatures, /keys, /bloom ; POST /messages, /signatures, /keys) utilisent AbortSignal.timeout(RELAY_FETCH_TIMEOUT_MS) (15 s). En cas de dépassement, lappel échoue (AbortError).
  • Collecte signatures : chaque GET /signatures pendant la boucle de collecte utilise un timeout distinct COLLECT_FETCH_TIMEOUT_MS (15 s). Configurable via CollectLoopOpts.fetchTimeoutMs. En échec, le relais est ignoré pour ce poll, log fetchSignaturesForHash relay failure.

Modifications

  • utils/relay.ts : RELAY_FETCH_TIMEOUT_MS ; getSignatures(relay, hash, timeoutMs?) avec timeoutMs optionnel ; signal: AbortSignal.timeout(...) sur chaque fetch.
  • utils/collectSignatures.ts : COLLECT_FETCH_TIMEOUT_MS ; fetchSignaturesForHash(..., fetchTimeoutMs?) ; CollectLoopOpts.fetchTimeoutMs ; runCollectLoop passe le timeout aux fetch ; log console.error en cas déchec fetch par relais.
  • services/syncService.ts : pas de retry ; en échec fetch, le relais est marqué ok: false.

Modalités de déploiement

Déploiement classique du front userwallet.

Modalités danalyse

  • Relais lent ou coupé : timeout après 15 s ; relayStatus indique ok: false pour ce relais. Log « Error syncing from … ».
  • Collecte : un relais en timeout sur GET /signatures → log « fetchSignaturesForHash relay failure » ; le poll continue avec les autres relais. Boucle globale COLLECT_TIMEOUT_MS (5 min).

Références

  • features/userwallet-contrat-login-reste-a-faire.md (§ 3.1)
  • userwallet/docs/specs.md (X_RELAY_TIMEOUT)