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

34 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)