1173 Commits

Author SHA1 Message Date
Igor Sirotin
bca1267b39
fix(peermanager): prefer connected peers in selection
Filter/lightpush peer selection (Automatic -> SelectRandom, and the
service-slot pubsub path) chose uniformly at random among all peers that
support the protocol+pubsub topic, with no regard for connectedness. A
light node that has learned many peers via discv5/peer-exchange — some of
them stale/unreachable (e.g. torn-down nodes whose ENRs a bootstrap node
still advertised) — would therefore keep picking dead peers, churning on
failed dials and missing messages, even while a perfectly good already-
connected service node (e.g. the static fleet node) was available.

Add preferConnectedPeers: bias selection toward peers we are currently
connected to, falling back to the full candidate set when none are
connected (so behavior is unchanged when there is no connected candidate).

Relates to status-im/status-go#7513.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 14:48:36 +03:00
Alex Jbanca
d6d39395ac chore: reduce PR verbosity 2026-05-18 12:14:54 +05:30
Alex Jbanca
2da08c3e14 fix(filter): bound per-Sub retry storm under sustained subscribe failures
Sustained subscribe failures saturated CPU, leaked 600+ subscriptionLoop
  goroutines, and twice panicked with `strings: Join output length overflow`.
  Five independent issues:

  - api/filter: errcnt budget was gated on `possibleRecursiveError`, which
    matched only `ErrNoPeersAvailable` / `swarm.ErrDialBackoff`. The dominant
    error class never incremented errcnt, so the 3-error-per-5s budget was
    dead code. Replaced gate with `shouldIncrementErrCnt(err)`: counts every
    non-nil error.

  - protocol/filter: WakuFilterLightNode.Subscribe flattened per-peer errors
    via `fmt.Errorf+strings.Join`, losing typed *FilterError and growing
    unboundedly. Replaced with typed `*SubscribeError` (PeerID, ContentTopics,
    Err) plus `HasRateLimitError()`; `Error()` is hard-capped. Concurrent
    per-peer appends now mutex-guarded.

  - api/filter: 60-s rate-limit backoff on `*SubscribeError.HasRateLimitError()`.
    `shouldHonourRateLimitBackoff(rateLimitedUntil, now)` gates ticker push and
    closing-channel checkAndResubscribe. Cleared on subscribe success.

  - api/filter: FilterManager.waitingToSubQueue was a cap-100 chan written and
    drained under the same lock, deadlocking the manager once full. Replaced
    with mutex-guarded slice.

  - api/filter: Sub.cleanup closed DataCh while multiplex forwarders could
    still be sending. Added multiplexWG awaited in cleanup; forwarder send is
    in a select with apiSub.ctx.Done() so it can't deadlock when
    subDetails.C is never closed (node-stop transitions).

  Tests (all under -race):
  - TestSub_CleanupRaceWithMultiplex (50 iter)
  - TestSub_CleanupDoesNotDeadlockWhenSubChannelStaysOpen
  - TestFilterManager_SubscribeFilter_DoesNotDeadlockWhenQueueFull
  - TestShouldIncrementErrCnt
2026-05-18 12:14:54 +05:30
Alex Jbanca
de84ba47f9
fix: SetClosing no longer holds SubscriptionDetails lock across a potentially blocking channel send (#1301) 2026-04-21 15:40:52 +05:30
Igor Sirotin
d1b2917b3a
chore: update license files to comply with Logos licensing requirements 2026-02-05 15:08:36 +00:00
9503a0c27f
chore: bump jenkins lib add build ids to ghcmgr
Depends on:
https://github.com/status-im/status-jenkins-lib/pull/131

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2026-01-16 20:03:13 +01:00
Igor Sirotin
f40bcd7e79
chore: update version file v0.10.1 2025-12-10 10:27:51 +00:00
Igor Sirotin
b0af7695bd
feat: single point of localnode parametrization (#1297) 2025-12-10 10:21:57 +00:00
Igor Sirotin
4b28d08451
fix: start watchTopicShards once (#1298) 2025-12-09 10:50:39 +00:00
Igor Sirotin
5635735da6
fix(PeerManager): SelectRandom filter by protocol (#1296) 2025-12-08 21:26:41 +00:00
Prem Chaitanya Prathi
84a4b1be7a
fix: use simple protocol and pubsubTopic based selection for peerExchange (#1295) 2025-10-15 06:37:06 +05:30
Igor Sirotin
06c9af60f3
chore: update go-discover (#1294) 2025-10-03 23:51:21 +01:00
Igor Sirotin
01bb2e1c49
feat: version 0.10.0 v0.10.0 2025-10-03 00:38:02 +01:00
Igor Sirotin
070ff0d7c5
chore: upgrade go-ethereum (#1292) 2025-10-03 00:33:39 +01:00
Igor Sirotin
b2d4752dd1
ci: remove codeclimate coverare reporting (#1293) 2025-10-01 17:22:02 +01:00
Igor Sirotin
0c3d6dc0a8
chore: upgrade go-libp2p (#1288) 2025-08-25 18:23:53 +01:00
Igor Sirotin
feac2604f5
chore: upgrade to go 1.23 (#1291)
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Co-authored-by: Jakub Sokołowski <jakub@status.im>
2025-08-25 17:47:02 +01:00
Igor Sirotin
6ceea038ff
ci: fix linter, storev3 tests and nix-flake jobs (#1289)
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Co-authored-by: Jakub Sokołowski <jakub@status.im>
2025-08-25 15:44:07 +01:00
Siddarth Kumar
d6b9120de3 ci: disable restart from stage in jenkins
related issue : https://github.com/status-im/infra-ci/issues/202
2025-07-26 15:39:21 +05:30
Igor Sirotin
5dea6d3bce
fix: remove automatic relay unsubscribe in a goroutine (#1284) 2025-05-28 12:04:23 +01:00
gabrielmer
900b98812a
fix: store query by hash (#1282) 2025-04-11 17:56:37 +03:00
kaichao
f59588a970
feat: send bucket update when rate limit applied (#1277) 2025-03-25 17:52:50 +08:00
gabrielmer
fdf03de179
fix: setting peerId for store query (#1278) 2025-03-20 15:47:51 +02:00
richΛrd
e68fcdb554
refactor: use peerInfo and multiaddresses instead of peerID (#1269) 2025-03-13 18:15:44 +02:00
Siddarth Kumar
b53227f641
ci: upgrade nix to 2.24 (#1272) 2025-03-13 12:02:12 -04:00
Prem Chaitanya Prathi
24932b529c
chore: disable filter logs to prevent spam (#1275) 2025-02-18 11:16:16 +05:30
Prem Chaitanya Prathi
4ef460cb95
fix: filter network change handling (#1270) 2025-01-03 15:47:27 +05:30
Prem Chaitanya Prathi
c0afa070a3
fix: update criteria context on missing msg verifier start (#1268) 2024-12-24 14:28:53 +05:30
kaichao
6dcf177414
feat: rate limit with rln configuration (#1262) 2024-12-24 11:27:48 +08:00
Prem Chaitanya Prathi
78b522db50
fix: have better defaults for send/recv rate-limits (#1267) 2024-12-16 19:18:16 +05:30
frank
ffed0595ad
fix: concurrent peerMap iteration and write (#1266) 2024-12-12 18:46:22 +08:00
Pablo Lopez
9a243696d7
fix: fatal error: concurrent map writes (#1265) 2024-12-10 14:08:04 +02:00
Prem Chaitanya Prathi
809dba5854
fix: use bad peer removal logic only for lightpush and filter and option to restart missing message verifier (#1244) 2024-12-09 14:14:28 +05:30
Arseniy Klempner
6550ff35bc
feat: option to emit event to bus upon message sent (#1261) 2024-12-02 19:22:30 -08:00
richΛrd
0c594b3140
feat: filter rate limit (#1258) 2024-11-29 12:25:55 -04:00
Richard Ramos
1608cf2b0b
fix: populate pinger 2024-11-28 14:38:57 -04:00
Zoro
68a6faaf5c
chore: use decred secp256k1 directly (#1245) 2024-11-25 15:06:12 -04:00
richΛrd
f98a17bacf
feat: limit api store queries to 24h (#1257) 2024-11-25 15:05:47 -04:00
richΛrd
96702e278b
fix: setup shards (#1256) 2024-11-22 09:36:02 -04:00
richΛrd
dd82c24e00
chore: use AddrInfo instead of ID to match nwaku's libwaku ping function (#1251) 2024-10-28 15:46:39 -04:00
Prem Chaitanya Prathi
c78b09d4ca
fix: filter stats mismatch and add bad peer check for light mode (#1241) 2024-10-28 11:46:40 +05:30
richΛrd
fdb3c3d0b3
refactor: use protobuffer for API storenode queries (#1248) 2024-10-24 14:47:57 -04:00
Richard Ramos
6bdf125dd1
refactor: extract ping interface 2024-10-24 14:32:22 -04:00
kaichao
38be0dc169
chore: fix store request id log (#1242) 2024-10-21 11:23:49 +08:00
richΛrd
37f936d747
refactor: decouple API from go-waku (#1239) 2024-10-15 15:48:15 -04:00
richΛrd
76275f6fb8
feat: storenode cycle (#1223) 2024-10-14 14:58:51 -04:00
Prem Chaitanya Prathi
0ed94ce0b1
fix: simple backoff strategy after 3 subscribe failures (#1238) 2024-10-04 11:10:19 +05:30
richΛrd
15b4aee808
fix: use byte array to decode ENRs uint8 fields (#1227) 2024-10-03 10:12:31 -04:00
Richard Ramos
ae423936ed
fix: remove bandwidth metrics that were commited to master by mistake 2024-10-01 18:24:47 -04:00
Prem Chaitanya Prathi
244bb176eb
feat: add clusterID and shards config to c-bindings (#1228) 2024-10-01 10:21:13 +05:30