@waku/core 0.0.37-987c6cd.0 → 0.0.37-c24842a.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
- import { Tags } from "@waku/interfaces";
1
+ import { CONNECTION_LOCKED_TAG, Tags } from "@waku/interfaces";
2
2
  import { Logger } from "@waku/utils";
3
3
  const log = new Logger("connection-limiter");
4
+ const DEFAULT_CONNECTION_MONITOR_INTERVAL = 5 * 1_000;
4
5
  /**
5
6
  * This class is responsible for limiting the number of connections to peers.
6
7
  * It also dials all known peers because libp2p might have emitted `peer:discovery` before initialization
@@ -11,6 +12,7 @@ export class ConnectionLimiter {
11
12
  events;
12
13
  networkMonitor;
13
14
  dialer;
15
+ connectionMonitorInterval = null;
14
16
  options;
15
17
  constructor(options) {
16
18
  this.libp2p = options.libp2p;
@@ -19,14 +21,16 @@ export class ConnectionLimiter {
19
21
  this.dialer = options.dialer;
20
22
  this.options = options.options;
21
23
  this.onWakuConnectionEvent = this.onWakuConnectionEvent.bind(this);
22
- this.onConnectedEvent = this.onConnectedEvent.bind(this);
23
24
  this.onDisconnectedEvent = this.onDisconnectedEvent.bind(this);
24
25
  }
25
26
  start() {
26
27
  // dial all known peers because libp2p might have emitted `peer:discovery` before initialization
27
28
  void this.dialPeersFromStore();
29
+ if (this.options.enableAutoRecovery &&
30
+ this.connectionMonitorInterval === null) {
31
+ this.connectionMonitorInterval = setInterval(() => void this.maintainConnections(), DEFAULT_CONNECTION_MONITOR_INTERVAL);
32
+ }
28
33
  this.events.addEventListener("waku:connection", this.onWakuConnectionEvent);
29
- this.libp2p.addEventListener("peer:connect", this.onConnectedEvent);
30
34
  /**
31
35
  * NOTE: Event is not being emitted on closing nor losing a connection.
32
36
  * @see https://github.com/libp2p/js-libp2p/issues/939
@@ -42,27 +46,24 @@ export class ConnectionLimiter {
42
46
  }
43
47
  stop() {
44
48
  this.events.removeEventListener("waku:connection", this.onWakuConnectionEvent);
45
- this.libp2p.removeEventListener("peer:connect", this.onConnectedEvent);
46
49
  this.libp2p.removeEventListener("peer:disconnect", this.onDisconnectedEvent);
50
+ if (this.connectionMonitorInterval) {
51
+ clearInterval(this.connectionMonitorInterval);
52
+ this.connectionMonitorInterval = null;
53
+ }
47
54
  }
48
55
  onWakuConnectionEvent() {
56
+ if (!this.options.enableAutoRecovery) {
57
+ log.info(`Auto recovery is disabled, skipping`);
58
+ return;
59
+ }
49
60
  if (this.networkMonitor.isBrowserConnected()) {
50
61
  void this.dialPeersFromStore();
51
62
  }
52
63
  }
53
- async onConnectedEvent(evt) {
54
- log.info(`Connected to peer ${evt.detail.toString()}`);
55
- const peerId = evt.detail;
56
- const tags = await this.getTagsForPeer(peerId);
57
- const isBootstrap = tags.includes(Tags.BOOTSTRAP);
58
- if (!isBootstrap) {
59
- log.info(`Connected to peer ${peerId.toString()} is not a bootstrap peer`);
60
- return;
61
- }
62
- if (await this.hasMoreThanMaxBootstrapConnections()) {
63
- log.info(`Connected to peer ${peerId.toString()} and node has more than max bootstrap connections ${this.options.maxBootstrapPeers}. Dropping connection.`);
64
- await this.libp2p.hangUp(peerId);
65
- }
64
+ async maintainConnections() {
65
+ await this.maintainConnectionsCount();
66
+ await this.maintainBootstrapConnections();
66
67
  }
67
68
  async onDisconnectedEvent() {
68
69
  if (this.libp2p.getConnections().length === 0) {
@@ -70,54 +71,106 @@ export class ConnectionLimiter {
70
71
  await this.dialPeersFromStore();
71
72
  }
72
73
  }
73
- async dialPeersFromStore() {
74
- log.info(`Dialing peers from store`);
75
- const allPeers = await this.libp2p.peerStore.all();
76
- const allConnections = this.libp2p.getConnections();
77
- log.info(`Found ${allPeers.length} peers in store, and found ${allConnections.length} connections`);
78
- const promises = allPeers
79
- .filter((p) => !allConnections.some((c) => c.remotePeer.equals(p.id)))
80
- .map((p) => this.dialer.dial(p.id));
74
+ async maintainConnectionsCount() {
75
+ log.info(`Maintaining connections count`);
76
+ const connections = this.libp2p.getConnections();
77
+ if (connections.length <= this.options.maxConnections) {
78
+ log.info(`Node has less than max connections ${this.options.maxConnections}, trying to dial more peers`);
79
+ const peers = await this.getPrioritizedPeers();
80
+ if (peers.length === 0) {
81
+ log.info(`No peers to dial, node is utilizing all known peers`);
82
+ return;
83
+ }
84
+ const promises = peers
85
+ .slice(0, this.options.maxConnections - connections.length)
86
+ .map((p) => this.dialer.dial(p.id));
87
+ await Promise.all(promises);
88
+ return;
89
+ }
90
+ log.info(`Node has more than max connections ${this.options.maxConnections}, dropping connections`);
81
91
  try {
82
- log.info(`Dialing ${promises.length} peers from store`);
92
+ const connectionsToDrop = connections
93
+ .filter((c) => !c.tags.includes(CONNECTION_LOCKED_TAG))
94
+ .slice(this.options.maxConnections);
95
+ if (connectionsToDrop.length === 0) {
96
+ log.info(`No connections to drop, skipping`);
97
+ return;
98
+ }
99
+ const promises = connectionsToDrop.map((c) => this.libp2p.hangUp(c.remotePeer));
83
100
  await Promise.all(promises);
84
- log.info(`Dialed ${promises.length} peers from store`);
101
+ log.info(`Dropped ${connectionsToDrop.length} connections`);
85
102
  }
86
103
  catch (error) {
87
- log.error(`Unexpected error while dialing peer store peers`, error);
104
+ log.error(`Unexpected error while maintaining connections`, error);
88
105
  }
89
106
  }
90
- async hasMoreThanMaxBootstrapConnections() {
107
+ async maintainBootstrapConnections() {
108
+ log.info(`Maintaining bootstrap connections`);
109
+ const bootstrapPeers = await this.getBootstrapPeers();
110
+ if (bootstrapPeers.length <= this.options.maxBootstrapPeers) {
111
+ return;
112
+ }
91
113
  try {
92
- const peers = await Promise.all(this.libp2p
93
- .getConnections()
94
- .map((conn) => conn.remotePeer)
95
- .map((id) => this.getPeer(id)));
96
- const bootstrapPeers = peers.filter((peer) => peer && peer.tags.has(Tags.BOOTSTRAP));
97
- return bootstrapPeers.length > this.options.maxBootstrapPeers;
114
+ const peersToDrop = bootstrapPeers.slice(this.options.maxBootstrapPeers);
115
+ log.info(`Dropping ${peersToDrop.length} bootstrap connections because node has more than max bootstrap connections ${this.options.maxBootstrapPeers}`);
116
+ const promises = peersToDrop.map((p) => this.libp2p.hangUp(p.id));
117
+ await Promise.all(promises);
118
+ log.info(`Dropped ${peersToDrop.length} bootstrap connections`);
98
119
  }
99
120
  catch (error) {
100
- log.error(`Unexpected error while checking for bootstrap connections`, error);
101
- return false;
121
+ log.error(`Unexpected error while maintaining bootstrap connections`, error);
102
122
  }
103
123
  }
104
- async getPeer(peerId) {
124
+ async dialPeersFromStore() {
125
+ log.info(`Dialing peers from store`);
105
126
  try {
106
- return await this.libp2p.peerStore.get(peerId);
127
+ const peers = await this.getPrioritizedPeers();
128
+ if (peers.length === 0) {
129
+ log.info(`No peers to dial, skipping`);
130
+ return;
131
+ }
132
+ const promises = peers.map((p) => this.dialer.dial(p.id));
133
+ log.info(`Dialing ${peers.length} peers from store`);
134
+ await Promise.all(promises);
135
+ log.info(`Dialed ${promises.length} peers from store`);
107
136
  }
108
137
  catch (error) {
109
- log.error(`Failed to get peer ${peerId}, error: ${error}`);
110
- return null;
138
+ log.error(`Unexpected error while dialing peer store peers`, error);
111
139
  }
112
140
  }
113
- async getTagsForPeer(peerId) {
141
+ /**
142
+ * Returns a list of peers ordered by priority:
143
+ * - bootstrap peers
144
+ * - peers from peer exchange
145
+ * - peers from local store (last because we are not sure that locally stored information is up to date)
146
+ */
147
+ async getPrioritizedPeers() {
148
+ const allPeers = await this.libp2p.peerStore.all();
149
+ const allConnections = this.libp2p.getConnections();
150
+ log.info(`Found ${allPeers.length} peers in store, and found ${allConnections.length} connections`);
151
+ const notConnectedPeers = allPeers.filter((p) => !allConnections.some((c) => c.remotePeer.equals(p.id)) &&
152
+ p.addresses.some((a) => a.multiaddr.toString().includes("wss") ||
153
+ a.multiaddr.toString().includes("ws")));
154
+ const bootstrapPeers = notConnectedPeers.filter((p) => p.tags.has(Tags.BOOTSTRAP));
155
+ const peerExchangePeers = notConnectedPeers.filter((p) => p.tags.has(Tags.PEER_EXCHANGE));
156
+ const localStorePeers = notConnectedPeers.filter((p) => p.tags.has(Tags.LOCAL));
157
+ return [...bootstrapPeers, ...peerExchangePeers, ...localStorePeers];
158
+ }
159
+ async getBootstrapPeers() {
160
+ const peers = await Promise.all(this.libp2p
161
+ .getConnections()
162
+ .map((conn) => conn.remotePeer)
163
+ .map((id) => this.getPeer(id)));
164
+ const bootstrapPeers = peers.filter((peer) => peer && peer.tags.has(Tags.BOOTSTRAP));
165
+ return bootstrapPeers;
166
+ }
167
+ async getPeer(peerId) {
114
168
  try {
115
- const peer = await this.libp2p.peerStore.get(peerId);
116
- return Array.from(peer.tags.keys());
169
+ return await this.libp2p.peerStore.get(peerId);
117
170
  }
118
171
  catch (error) {
119
172
  log.error(`Failed to get peer ${peerId}, error: ${error}`);
120
- return [];
173
+ return null;
121
174
  }
122
175
  }
123
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connection_limiter.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection_limiter.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_limiter.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,15 @@
1
1
  import { type Peer, type PeerId, type Stream } from "@libp2p/interface";
2
2
  import { MultiaddrInput } from "@multiformats/multiaddr";
3
- import { ConnectionManagerOptions, IConnectionManager, IRelay, IWakuEventEmitter, NetworkConfig, PubsubTopic } from "@waku/interfaces";
3
+ import { ConnectionManagerOptions, IConnectionManager, IRelay, IWakuEventEmitter, NetworkConfig } from "@waku/interfaces";
4
4
  import { Libp2p } from "@waku/interfaces";
5
5
  type ConnectionManagerConstructorOptions = {
6
6
  libp2p: Libp2p;
7
7
  events: IWakuEventEmitter;
8
- pubsubTopics: PubsubTopic[];
9
8
  networkConfig: NetworkConfig;
10
9
  relay?: IRelay;
11
10
  config?: Partial<ConnectionManagerOptions>;
12
11
  };
13
12
  export declare class ConnectionManager implements IConnectionManager {
14
- private readonly pubsubTopics;
15
13
  private readonly keepAliveManager;
16
14
  private readonly discoveryDialer;
17
15
  private readonly dialer;
@@ -27,7 +25,6 @@ export declare class ConnectionManager implements IConnectionManager {
27
25
  dial(peer: PeerId | MultiaddrInput, protocolCodecs: string[]): Promise<Stream>;
28
26
  hangUp(peer: PeerId | MultiaddrInput): Promise<boolean>;
29
27
  getConnectedPeers(codec?: string): Promise<Peer[]>;
30
- isTopicConfigured(pubsubTopic: PubsubTopic): boolean;
31
28
  hasShardInfo(peerId: PeerId): Promise<boolean>;
32
29
  isPeerOnTopic(peerId: PeerId, pubsubTopic: string): Promise<boolean>;
33
30
  }
@@ -7,11 +7,15 @@ import { NetworkMonitor } from "./network_monitor.js";
7
7
  import { ShardReader } from "./shard_reader.js";
8
8
  import { getPeerPing, mapToPeerId, mapToPeerIdOrMultiaddr } from "./utils.js";
9
9
  const log = new Logger("connection-manager");
10
- const DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED = 1;
10
+ const DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED = 3;
11
11
  const DEFAULT_PING_KEEP_ALIVE_SEC = 5 * 60;
12
12
  const DEFAULT_RELAY_KEEP_ALIVE_SEC = 5 * 60;
13
+ const DEFAULT_ENABLE_AUTO_RECOVERY = true;
14
+ const DEFAULT_MAX_CONNECTIONS = 10;
15
+ const DEFAULT_MAX_DIALING_PEERS = 3;
16
+ const DEFAULT_FAILED_DIAL_COOLDOWN_SEC = 60;
17
+ const DEFAULT_DIAL_COOLDOWN_SEC = 10;
13
18
  export class ConnectionManager {
14
- pubsubTopics;
15
19
  keepAliveManager;
16
20
  discoveryDialer;
17
21
  dialer;
@@ -22,11 +26,15 @@ export class ConnectionManager {
22
26
  libp2p;
23
27
  constructor(options) {
24
28
  this.libp2p = options.libp2p;
25
- this.pubsubTopics = options.pubsubTopics;
26
29
  this.options = {
27
30
  maxBootstrapPeers: DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED,
31
+ maxConnections: DEFAULT_MAX_CONNECTIONS,
28
32
  pingKeepAlive: DEFAULT_PING_KEEP_ALIVE_SEC,
29
33
  relayKeepAlive: DEFAULT_RELAY_KEEP_ALIVE_SEC,
34
+ enableAutoRecovery: DEFAULT_ENABLE_AUTO_RECOVERY,
35
+ maxDialingPeers: DEFAULT_MAX_DIALING_PEERS,
36
+ failedDialCooldown: DEFAULT_FAILED_DIAL_COOLDOWN_SEC,
37
+ dialCooldown: DEFAULT_DIAL_COOLDOWN_SEC,
30
38
  ...options.config
31
39
  };
32
40
  this.keepAliveManager = new KeepAliveManager({
@@ -43,7 +51,8 @@ export class ConnectionManager {
43
51
  });
44
52
  this.dialer = new Dialer({
45
53
  libp2p: options.libp2p,
46
- shardReader: this.shardReader
54
+ shardReader: this.shardReader,
55
+ options: this.options
47
56
  });
48
57
  this.discoveryDialer = new DiscoveryDialer({
49
58
  libp2p: options.libp2p,
@@ -62,12 +71,14 @@ export class ConnectionManager {
62
71
  });
63
72
  }
64
73
  start() {
74
+ this.dialer.start();
65
75
  this.networkMonitor.start();
66
76
  this.discoveryDialer.start();
67
77
  this.keepAliveManager.start();
68
78
  this.connectionLimiter.start();
69
79
  }
70
80
  stop() {
81
+ this.dialer.stop();
71
82
  this.networkMonitor.stop();
72
83
  this.discoveryDialer.stop();
73
84
  this.keepAliveManager.stop();
@@ -119,9 +130,6 @@ export class ConnectionManager {
119
130
  log.info(`Found ${result.length} connected peers for codec ${codec}`);
120
131
  return result;
121
132
  }
122
- isTopicConfigured(pubsubTopic) {
123
- return this.pubsubTopics.includes(pubsubTopic);
124
- }
125
133
  async hasShardInfo(peerId) {
126
134
  return this.shardReader.hasShardInfo(peerId);
127
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connection_manager.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE7C,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAC9C,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3C,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,CAAC;AAW5C,MAAM,OAAO,iBAAiB;IACX,YAAY,CAAgB;IAE5B,gBAAgB,CAAmB;IACnC,eAAe,CAAkB;IACjC,MAAM,CAAS;IACf,WAAW,CAAc;IACzB,cAAc,CAAiB;IAC/B,iBAAiB,CAAoB;IAE9C,OAAO,CAA2B;IAClC,MAAM,CAAS;IAEvB,YAAmB,OAA4C;QAC7D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAEzC,IAAI,CAAC,OAAO,GAAG;YACb,iBAAiB,EAAE,mCAAmC;YACtD,aAAa,EAAE,2BAA2B;YAC1C,cAAc,EAAE,4BAA4B;YAC5C,GAAG,OAAO,CAAC,MAAM;SAClB,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;gBACzC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;aAC5C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,IAA6B,EAC7B,cAAwB;QAExB,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,cAAc,EAAE,CAAC,CAAC;QAE3E,yFAAyF;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,mBAAmB,cAAc,EAAE,CAAC,CAAC;QAE1E,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAA6B;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAE9D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CACP,uCAAuC,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,EAAE,CACtE,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,KAAc;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,KAAK;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACrE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAW,CAAC;QAE3E,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,8BAA8B,KAAK,EAAE,CAAC,CAAC;QAEtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,iBAAiB,CAAC,WAAwB;QAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,MAAc,EACd,WAAmB;QAEnB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"connection_manager.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_manager.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import type { PeerId } from "@libp2p/interface";
2
- import { Libp2p } from "@waku/interfaces";
2
+ import { ConnectionManagerOptions, Libp2p } from "@waku/interfaces";
3
3
  import { ShardReader } from "./shard_reader.js";
4
4
  type DialerConstructorOptions = {
5
5
  libp2p: Libp2p;
6
6
  shardReader: ShardReader;
7
+ options: ConnectionManagerOptions;
7
8
  };
8
9
  interface IDialer {
9
10
  start(): void;
@@ -13,10 +14,13 @@ interface IDialer {
13
14
  export declare class Dialer implements IDialer {
14
15
  private readonly libp2p;
15
16
  private readonly shardReader;
17
+ private readonly options;
16
18
  private dialingQueue;
17
19
  private dialHistory;
20
+ private failedDials;
18
21
  private dialingInterval;
19
22
  private isProcessing;
23
+ private isImmediateDialing;
20
24
  constructor(options: DialerConstructorOptions);
21
25
  start(): void;
22
26
  stop(): void;
@@ -24,5 +28,7 @@ export declare class Dialer implements IDialer {
24
28
  private processQueue;
25
29
  private dialPeer;
26
30
  private shouldSkipPeer;
31
+ private isRecentlyDialed;
32
+ private isRecentlyFailed;
27
33
  }
28
34
  export {};
@@ -3,28 +3,36 @@ const log = new Logger("dialer");
3
3
  export class Dialer {
4
4
  libp2p;
5
5
  shardReader;
6
+ options;
6
7
  dialingQueue = [];
7
8
  dialHistory = new Map();
9
+ failedDials = new Map();
8
10
  dialingInterval = null;
9
11
  isProcessing = false;
12
+ isImmediateDialing = false;
10
13
  constructor(options) {
11
14
  this.libp2p = options.libp2p;
12
15
  this.shardReader = options.shardReader;
16
+ this.options = options.options;
13
17
  }
14
18
  start() {
19
+ log.info("Starting dialer");
15
20
  if (!this.dialingInterval) {
16
21
  this.dialingInterval = setInterval(() => {
17
22
  void this.processQueue();
18
23
  }, 500);
19
24
  }
20
25
  this.dialHistory.clear();
26
+ this.failedDials.clear();
21
27
  }
22
28
  stop() {
29
+ log.info("Stopping dialer");
23
30
  if (this.dialingInterval) {
24
31
  clearInterval(this.dialingInterval);
25
32
  this.dialingInterval = null;
26
33
  }
27
34
  this.dialHistory.clear();
35
+ this.failedDials.clear();
28
36
  }
29
37
  async dial(peerId) {
30
38
  const shouldSkip = await this.shouldSkipPeer(peerId);
@@ -32,22 +40,28 @@ export class Dialer {
32
40
  log.info(`Skipping peer: ${peerId}`);
33
41
  return;
34
42
  }
43
+ const isEmptyQueue = this.dialingQueue.length === 0;
44
+ const isNotDialing = !this.isProcessing && !this.isImmediateDialing;
35
45
  // If queue is empty and we're not currently processing, dial immediately
36
- if (this.dialingQueue.length === 0 && !this.isProcessing) {
46
+ if (isEmptyQueue && isNotDialing) {
47
+ this.isImmediateDialing = true;
48
+ log.info("Dialed peer immediately");
37
49
  await this.dialPeer(peerId);
50
+ this.isImmediateDialing = false;
51
+ log.info("Released immediate dial lock");
38
52
  }
39
53
  else {
40
- // Add to queue
41
54
  this.dialingQueue.push(peerId);
42
55
  log.info(`Added peer to dialing queue, queue size: ${this.dialingQueue.length}`);
43
56
  }
44
57
  }
45
58
  async processQueue() {
46
- if (this.dialingQueue.length === 0 || this.isProcessing)
59
+ if (this.dialingQueue.length === 0 || this.isProcessing) {
47
60
  return;
61
+ }
48
62
  this.isProcessing = true;
49
63
  try {
50
- const peersToDial = this.dialingQueue.slice(0, 3);
64
+ const peersToDial = this.dialingQueue.slice(0, this.options.maxDialingPeers);
51
65
  this.dialingQueue = this.dialingQueue.slice(peersToDial.length);
52
66
  log.info(`Processing dial queue: dialing ${peersToDial.length} peers, ${this.dialingQueue.length} remaining in queue`);
53
67
  await Promise.all(peersToDial.map((peerId) => this.dialPeer(peerId)));
@@ -61,10 +75,12 @@ export class Dialer {
61
75
  log.info(`Dialing peer from queue: ${peerId}`);
62
76
  await this.libp2p.dial(peerId);
63
77
  this.dialHistory.set(peerId.toString(), Date.now());
78
+ this.failedDials.delete(peerId.toString());
64
79
  log.info(`Successfully dialed peer from queue: ${peerId}`);
65
80
  }
66
81
  catch (error) {
67
82
  log.error(`Error dialing peer ${peerId}`, error);
83
+ this.failedDials.set(peerId.toString(), Date.now());
68
84
  }
69
85
  }
70
86
  async shouldSkipPeer(peerId) {
@@ -73,11 +89,14 @@ export class Dialer {
73
89
  log.info(`Skipping peer ${peerId} - already connected`);
74
90
  return true;
75
91
  }
76
- const lastDialed = this.dialHistory.get(peerId.toString());
77
- if (lastDialed && Date.now() - lastDialed < 10_000) {
92
+ if (this.isRecentlyDialed(peerId)) {
78
93
  log.info(`Skipping peer ${peerId} - already dialed in the last 10 seconds`);
79
94
  return true;
80
95
  }
96
+ if (this.isRecentlyFailed(peerId)) {
97
+ log.info(`Skipping peer ${peerId} - recently failed to dial`);
98
+ return true;
99
+ }
81
100
  try {
82
101
  const hasShardInfo = await this.shardReader.hasShardInfo(peerId);
83
102
  if (!hasShardInfo) {
@@ -96,5 +115,21 @@ export class Dialer {
96
115
  return true; // Skip peer when there's an error
97
116
  }
98
117
  }
118
+ isRecentlyDialed(peerId) {
119
+ const lastDialed = this.dialHistory.get(peerId.toString());
120
+ if (lastDialed &&
121
+ Date.now() - lastDialed < this.options.dialCooldown * 1000) {
122
+ return true;
123
+ }
124
+ return false;
125
+ }
126
+ isRecentlyFailed(peerId) {
127
+ const lastFailed = this.failedDials.get(peerId.toString());
128
+ if (lastFailed &&
129
+ Date.now() - lastFailed < this.options.failedDialCooldown * 1000) {
130
+ return true;
131
+ }
132
+ return false;
133
+ }
99
134
  }
100
135
  //# sourceMappingURL=dialer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialer.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/dialer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialer.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/dialer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Libp2p } from "libp2p";
1
+ import { Libp2p } from "@libp2p/interface";
2
2
  import { Dialer } from "./dialer.js";
3
3
  type DiscoveryDialerConstructorOptions = {
4
4
  libp2p: Libp2p;
@@ -1 +1 @@
1
- {"version":3,"file":"discovery_dialer.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/discovery_dialer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery_dialer.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/discovery_dialer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type IMetadata, type Libp2pComponents, PubsubTopic } from "@waku/interfaces";
1
+ import { type ClusterId, type IMetadata, type Libp2pComponents } from "@waku/interfaces";
2
2
  export declare const MetadataCodec = "/vac/waku/metadata/1.0.0";
3
- export declare function wakuMetadata(pubsubTopics: PubsubTopic[]): (components: Libp2pComponents) => IMetadata;
3
+ export declare function wakuMetadata(clusterId: ClusterId): (components: Libp2pComponents) => IMetadata;
@@ -1,6 +1,6 @@
1
1
  import { ProtocolError } from "@waku/interfaces";
2
2
  import { proto_metadata } from "@waku/proto";
3
- import { encodeRelayShard, Logger, pubsubTopicsToShardInfo } from "@waku/utils";
3
+ import { encodeRelayShard, Logger } from "@waku/utils";
4
4
  import all from "it-all";
5
5
  import * as lp from "it-length-prefixed";
6
6
  import { pipe } from "it-pipe";
@@ -9,13 +9,13 @@ import { StreamManager } from "../stream_manager/index.js";
9
9
  const log = new Logger("metadata");
10
10
  export const MetadataCodec = "/vac/waku/metadata/1.0.0";
11
11
  class Metadata {
12
- pubsubTopics;
12
+ clusterId;
13
13
  streamManager;
14
14
  libp2pComponents;
15
15
  handshakesConfirmed = new Map();
16
16
  multicodec = MetadataCodec;
17
- constructor(pubsubTopics, libp2p) {
18
- this.pubsubTopics = pubsubTopics;
17
+ constructor(clusterId, libp2p) {
18
+ this.clusterId = clusterId;
19
19
  this.streamManager = new StreamManager(MetadataCodec, libp2p);
20
20
  this.libp2pComponents = libp2p;
21
21
  void libp2p.registrar.handle(MetadataCodec, (streamData) => {
@@ -26,7 +26,10 @@ class Metadata {
26
26
  * Make a metadata query to a peer
27
27
  */
28
28
  async query(peerId) {
29
- const request = proto_metadata.WakuMetadataRequest.encode(pubsubTopicsToShardInfo(this.pubsubTopics));
29
+ const request = proto_metadata.WakuMetadataRequest.encode({
30
+ clusterId: this.clusterId,
31
+ shards: [] // Only services node need to provide shards
32
+ });
30
33
  const peer = await this.libp2pComponents.peerStore.get(peerId);
31
34
  if (!peer) {
32
35
  return {
@@ -75,7 +78,10 @@ class Metadata {
75
78
  async onRequest(streamData) {
76
79
  try {
77
80
  const { stream, connection } = streamData;
78
- const encodedShardInfo = proto_metadata.WakuMetadataResponse.encode(pubsubTopicsToShardInfo(this.pubsubTopics));
81
+ const encodedShardInfo = proto_metadata.WakuMetadataResponse.encode({
82
+ clusterId: this.clusterId,
83
+ shards: [] // Only service nodes need to provide shards
84
+ });
79
85
  const encodedResponse = await pipe([encodedShardInfo], lp.encode, stream, lp.decode, async (source) => await all(source));
80
86
  const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse);
81
87
  if (error) {
@@ -115,7 +121,7 @@ class Metadata {
115
121
  this.handshakesConfirmed.set(peerId.toString(), shardInfo);
116
122
  }
117
123
  }
118
- export function wakuMetadata(pubsubTopics) {
119
- return (components) => new Metadata(pubsubTopics, components);
124
+ export function wakuMetadata(clusterId) {
125
+ return (components) => new Metadata(clusterId, components);
120
126
  }
121
127
  //# sourceMappingURL=metadata.js.map