@libp2p/kad-dht 14.0.2 → 14.1.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.
Files changed (83) hide show
  1. package/README.md +36 -0
  2. package/dist/index.min.js +2 -2
  3. package/dist/src/constants.d.ts +4 -3
  4. package/dist/src/constants.d.ts.map +1 -1
  5. package/dist/src/constants.js +8 -3
  6. package/dist/src/constants.js.map +1 -1
  7. package/dist/src/content-fetching/index.d.ts +1 -0
  8. package/dist/src/content-fetching/index.d.ts.map +1 -1
  9. package/dist/src/content-fetching/index.js +5 -3
  10. package/dist/src/content-fetching/index.js.map +1 -1
  11. package/dist/src/index.d.ts +107 -2
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +36 -0
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/kad-dht.d.ts +14 -1
  16. package/dist/src/kad-dht.d.ts.map +1 -1
  17. package/dist/src/kad-dht.js +76 -27
  18. package/dist/src/kad-dht.js.map +1 -1
  19. package/dist/src/network.d.ts +1 -0
  20. package/dist/src/network.d.ts.map +1 -1
  21. package/dist/src/network.js +4 -5
  22. package/dist/src/network.js.map +1 -1
  23. package/dist/src/peer-routing/index.d.ts.map +1 -1
  24. package/dist/src/peer-routing/index.js +9 -10
  25. package/dist/src/peer-routing/index.js.map +1 -1
  26. package/dist/src/providers.d.ts +21 -50
  27. package/dist/src/providers.d.ts.map +1 -1
  28. package/dist/src/providers.js +51 -192
  29. package/dist/src/providers.js.map +1 -1
  30. package/dist/src/query/manager.d.ts +1 -1
  31. package/dist/src/query/manager.d.ts.map +1 -1
  32. package/dist/src/query/manager.js +8 -19
  33. package/dist/src/query/manager.js.map +1 -1
  34. package/dist/src/query-self.d.ts +3 -1
  35. package/dist/src/query-self.d.ts.map +1 -1
  36. package/dist/src/query-self.js +17 -16
  37. package/dist/src/query-self.js.map +1 -1
  38. package/dist/src/reprovider.d.ts +63 -0
  39. package/dist/src/reprovider.d.ts.map +1 -0
  40. package/dist/src/reprovider.js +161 -0
  41. package/dist/src/reprovider.js.map +1 -0
  42. package/dist/src/routing-table/closest-peers.d.ts +1 -0
  43. package/dist/src/routing-table/closest-peers.d.ts.map +1 -1
  44. package/dist/src/routing-table/closest-peers.js +7 -0
  45. package/dist/src/routing-table/closest-peers.js.map +1 -1
  46. package/dist/src/routing-table/index.d.ts +1 -0
  47. package/dist/src/routing-table/index.d.ts.map +1 -1
  48. package/dist/src/routing-table/index.js +14 -11
  49. package/dist/src/routing-table/index.js.map +1 -1
  50. package/dist/src/rpc/handlers/get-value.d.ts +1 -0
  51. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  52. package/dist/src/rpc/handlers/get-value.js +3 -1
  53. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  54. package/dist/src/rpc/handlers/put-value.d.ts +1 -0
  55. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  56. package/dist/src/rpc/handlers/put-value.js +3 -1
  57. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  58. package/dist/src/rpc/index.d.ts +1 -0
  59. package/dist/src/rpc/index.d.ts.map +1 -1
  60. package/dist/src/rpc/index.js +9 -10
  61. package/dist/src/rpc/index.js.map +1 -1
  62. package/dist/src/utils.d.ts +20 -1
  63. package/dist/src/utils.d.ts.map +1 -1
  64. package/dist/src/utils.js +87 -4
  65. package/dist/src/utils.js.map +1 -1
  66. package/dist/typedoc-urls.json +3 -0
  67. package/package.json +11 -13
  68. package/src/constants.ts +11 -5
  69. package/src/content-fetching/index.ts +5 -3
  70. package/src/index.ts +116 -2
  71. package/src/kad-dht.ts +94 -41
  72. package/src/network.ts +5 -5
  73. package/src/peer-routing/index.ts +9 -11
  74. package/src/providers.ts +57 -244
  75. package/src/query/manager.ts +12 -28
  76. package/src/query-self.ts +20 -17
  77. package/src/reprovider.ts +226 -0
  78. package/src/routing-table/closest-peers.ts +9 -0
  79. package/src/routing-table/index.ts +16 -11
  80. package/src/rpc/handlers/get-value.ts +3 -1
  81. package/src/rpc/handlers/put-value.ts +3 -1
  82. package/src/rpc/index.ts +10 -10
  83. package/src/utils.ts +102 -4
@@ -1,220 +1,79 @@
1
- import { peerIdFromString } from '@libp2p/peer-id';
2
- import cache from 'hashlru';
3
- import { Key } from 'interface-datastore/key';
4
- import Queue from 'p-queue';
1
+ import { PeerMap } from '@libp2p/peer-collections';
5
2
  import * as varint from 'uint8-varint';
6
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
- import { PROVIDERS_CLEANUP_INTERVAL, PROVIDERS_VALIDITY, PROVIDERS_LRU_CACHE_SIZE, PROVIDER_KEY_PREFIX } from './constants.js';
3
+ import { parseProviderKey, readProviderTime, toProviderKey } from './utils.js';
8
4
  /**
9
- * This class manages known providers.
10
- * A provider is a peer that we know to have the content for a given CID.
11
- *
12
- * Every `cleanupInterval` providers are checked if they
13
- * are still valid, i.e. younger than the `provideValidity`.
14
- * If they are not, they are deleted.
15
- *
16
- * To ensure the list survives restarts of the daemon,
17
- * providers are stored in the datastore, but to ensure
18
- * access is fast there is an LRU cache in front of that.
5
+ * Provides a mechanism to add and remove provider records from the datastore
19
6
  */
20
7
  export class Providers {
21
8
  log;
22
9
  datastore;
23
- cache;
24
- cleanupInterval;
25
- provideValidity;
26
- syncQueue;
27
- started;
28
- cleaner;
29
- constructor(components, init = {}) {
30
- const { cacheSize, cleanupInterval, provideValidity } = init;
31
- this.log = components.logger.forComponent('libp2p:kad-dht:providers');
10
+ datastorePrefix;
11
+ lock;
12
+ constructor(components, init) {
13
+ this.log = components.logger.forComponent(`${init.logPrefix}:providers`);
14
+ this.datastorePrefix = `/${init.datastorePrefix}/provider`;
32
15
  this.datastore = components.datastore;
33
- this.cleanupInterval = cleanupInterval ?? PROVIDERS_CLEANUP_INTERVAL;
34
- this.provideValidity = provideValidity ?? PROVIDERS_VALIDITY;
35
- this.cache = cache(cacheSize ?? PROVIDERS_LRU_CACHE_SIZE);
36
- this.syncQueue = new Queue({ concurrency: 1 });
37
- this.started = false;
38
- }
39
- isStarted() {
40
- return this.started;
16
+ this.lock = init.lock;
41
17
  }
42
18
  /**
43
- * Start the provider cleanup service
19
+ * Add a new provider for the given CID
44
20
  */
45
- async start() {
46
- if (this.started) {
47
- return;
21
+ async addProvider(cid, provider) {
22
+ const release = await this.lock.readLock();
23
+ try {
24
+ this.log('%p provides %s', provider, cid);
25
+ await this.writeProviderEntry(cid, provider);
48
26
  }
49
- this.started = true;
50
- this.cleaner = setInterval(() => {
51
- this._cleanup().catch(err => {
52
- this.log.error(err);
53
- });
54
- }, this.cleanupInterval);
55
- }
56
- /**
57
- * Release any resources.
58
- */
59
- async stop() {
60
- this.started = false;
61
- if (this.cleaner != null) {
62
- clearInterval(this.cleaner);
63
- this.cleaner = undefined;
27
+ finally {
28
+ release();
64
29
  }
65
30
  }
66
31
  /**
67
- * Check all providers if they are still valid, and if not delete them
32
+ * Remove a provider for the given CID
68
33
  */
69
- async _cleanup() {
70
- await this.syncQueue.add(async () => {
71
- const start = Date.now();
72
- let count = 0;
73
- let deleteCount = 0;
74
- const deleted = new Map();
75
- const batch = this.datastore.batch();
76
- // Get all provider entries from the datastore
77
- const query = this.datastore.query({ prefix: PROVIDER_KEY_PREFIX });
78
- for await (const entry of query) {
79
- try {
80
- // Add a delete to the batch for each expired entry
81
- const { cid, peerId } = parseProviderKey(entry.key);
82
- const time = readTime(entry.value).getTime();
83
- const now = Date.now();
84
- const delta = now - time;
85
- const expired = delta > this.provideValidity;
86
- this.log('comparing: %d - %d = %d > %d %s', now, time, delta, this.provideValidity, expired ? '(expired)' : '');
87
- if (expired) {
88
- deleteCount++;
89
- batch.delete(entry.key);
90
- const peers = deleted.get(cid) ?? new Set();
91
- peers.add(peerId);
92
- deleted.set(cid, peers);
93
- }
94
- count++;
95
- }
96
- catch (err) {
97
- this.log.error(err.message);
98
- }
99
- }
100
- // Commit the deletes to the datastore
101
- if (deleted.size > 0) {
102
- this.log('deleting %d / %d entries', deleteCount, count);
103
- await batch.commit();
104
- }
105
- else {
106
- this.log('nothing to delete');
107
- }
108
- // Clear expired entries from the cache
109
- for (const [cid, peers] of deleted) {
110
- const key = makeProviderKey(cid);
111
- const provs = this.cache.get(key);
112
- if (provs != null) {
113
- for (const peerId of peers) {
114
- provs.delete(peerId);
115
- }
116
- if (provs.size === 0) {
117
- this.cache.remove(key);
118
- }
119
- else {
120
- this.cache.set(key, provs);
121
- }
122
- }
123
- }
124
- this.log('Cleanup successful (%dms)', Date.now() - start);
125
- });
34
+ async removeProvider(cid, provider) {
35
+ const release = await this.lock.writeLock();
36
+ try {
37
+ const key = toProviderKey(this.datastorePrefix, cid, provider);
38
+ this.log('%p no longer provides %s', provider, cid);
39
+ await this.datastore.delete(key);
40
+ }
41
+ finally {
42
+ release();
43
+ }
126
44
  }
127
45
  /**
128
- * Get the currently known provider peer ids for a given CID
46
+ * Get a list of providers for the given CID
129
47
  */
130
- async _getProvidersMap(cid) {
131
- const cacheKey = makeProviderKey(cid);
132
- let provs = this.cache.get(cacheKey);
133
- if (provs == null) {
134
- provs = await loadProviders(this.datastore, cid);
135
- this.cache.set(cacheKey, provs);
48
+ async getProviders(cid) {
49
+ const release = await this.lock.readLock();
50
+ try {
51
+ this.log('get providers for %s', cid);
52
+ const provs = await this.loadProviders(cid);
53
+ return [...provs.keys()];
54
+ }
55
+ finally {
56
+ release();
136
57
  }
137
- return provs;
138
58
  }
139
59
  /**
140
- * Add a new provider for the given CID
60
+ * Write a provider into the given store
141
61
  */
142
- async addProvider(cid, provider) {
143
- await this.syncQueue.add(async () => {
144
- this.log('%p provides %s', provider, cid);
145
- const provs = await this._getProvidersMap(cid);
146
- this.log('loaded %s provs', provs.size);
147
- const now = new Date();
148
- provs.set(provider.toString(), now);
149
- const dsKey = makeProviderKey(cid);
150
- this.cache.set(dsKey, provs);
151
- await writeProviderEntry(this.datastore, cid, provider, now);
152
- });
62
+ async writeProviderEntry(cid, peerId, time = new Date()) {
63
+ const key = toProviderKey(this.datastorePrefix, cid, peerId);
64
+ const buffer = varint.encode(time.getTime());
65
+ await this.datastore.put(key, buffer);
153
66
  }
154
67
  /**
155
- * Get a list of providers for the given CID
68
+ * Load providers for the given CID from the store
156
69
  */
157
- async getProviders(cid) {
158
- return this.syncQueue.add(async () => {
159
- this.log('get providers for %s', cid);
160
- const provs = await this._getProvidersMap(cid);
161
- return [...provs.keys()].map(peerIdStr => {
162
- return peerIdFromString(peerIdStr);
163
- });
164
- }, {
165
- // no timeout is specified for this queue so it will not
166
- // throw, but this is required to get the right return
167
- // type since p-queue@7.3.4
168
- throwOnTimeout: true
169
- });
170
- }
171
- }
172
- /**
173
- * Encode the given key its matching datastore key
174
- */
175
- function makeProviderKey(cid) {
176
- const cidStr = typeof cid === 'string' ? cid : uint8ArrayToString(cid.multihash.bytes, 'base32');
177
- return `${PROVIDER_KEY_PREFIX}/${cidStr}`;
178
- }
179
- /**
180
- * Write a provider into the given store
181
- */
182
- async function writeProviderEntry(store, cid, peer, time) {
183
- const dsKey = [
184
- makeProviderKey(cid),
185
- '/',
186
- peer.toString()
187
- ].join('');
188
- const key = new Key(dsKey);
189
- const buffer = varint.encode(time.getTime());
190
- await store.put(key, buffer);
191
- }
192
- /**
193
- * Parse the CID and provider peer id from the key
194
- */
195
- function parseProviderKey(key) {
196
- const parts = key.toString().split('/');
197
- if (parts.length !== 5) {
198
- throw new Error(`incorrectly formatted provider entry key in datastore: ${key.toString()}`);
199
- }
200
- return {
201
- cid: parts[3],
202
- peerId: parts[4]
203
- };
204
- }
205
- /**
206
- * Load providers for the given CID from the store
207
- */
208
- async function loadProviders(store, cid) {
209
- const providers = new Map();
210
- const query = store.query({ prefix: makeProviderKey(cid) });
211
- for await (const entry of query) {
212
- const { peerId } = parseProviderKey(entry.key);
213
- providers.set(peerId, readTime(entry.value));
70
+ async loadProviders(cid) {
71
+ const providers = new PeerMap();
72
+ for await (const entry of this.datastore.query({ prefix: toProviderKey(this.datastorePrefix, cid).toString() })) {
73
+ const { peerId } = parseProviderKey(entry.key);
74
+ providers.set(peerId, readProviderTime(entry.value));
75
+ }
76
+ return providers;
214
77
  }
215
- return providers;
216
- }
217
- function readTime(buf) {
218
- return new Date(varint.decode(buf));
219
78
  }
220
79
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface CleanUpEvents {
9
9
  }
10
10
  export interface QueryManagerInit {
11
11
  logPrefix: string;
12
+ metricsPrefix: string;
12
13
  disjointPaths?: number;
13
14
  alpha?: number;
14
15
  initialQuerySelfHasRun: DeferredPromise<void>;
@@ -41,7 +42,6 @@ export declare class QueryManager implements Startable {
41
42
  private readonly routingTable;
42
43
  private initialQuerySelfHasRun?;
43
44
  private readonly logPrefix;
44
- private readonly metrics;
45
45
  constructor(components: QueryManagerComponents, init: QueryManagerInit);
46
46
  isStarted(): boolean;
47
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAmB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IACrC,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAIvB;gBAEY,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAyBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAS7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMpB,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;CA+H5G"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IACrC,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAErB,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAkBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAa7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMpB,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;CAsH5G"}
@@ -21,27 +21,20 @@ export class QueryManager {
21
21
  routingTable;
22
22
  initialQuerySelfHasRun;
23
23
  logPrefix;
24
- metrics;
25
24
  constructor(components, init) {
26
- const { disjointPaths = K, alpha = ALPHA, logPrefix } = init;
27
- this.logPrefix = logPrefix;
28
- this.disjointPaths = disjointPaths ?? K;
29
- this.running = false;
30
- this.alpha = alpha ?? ALPHA;
25
+ this.logPrefix = init.logPrefix;
26
+ this.disjointPaths = init.disjointPaths ?? K;
27
+ this.alpha = init.alpha ?? ALPHA;
31
28
  this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;
32
29
  this.routingTable = init.routingTable;
33
30
  this.logger = components.logger;
34
31
  this.peerId = components.peerId;
35
32
  this.connectionManager = components.connectionManager;
36
- this.metrics = {
37
- queries: components.metrics?.registerCounter(`${logPrefix.replaceAll(':', '_')}_queries_total`),
38
- errors: components.metrics?.registerCounter(`${logPrefix.replaceAll(':', '_')}_query_errors_total`),
39
- queryTime: components.metrics?.registerMetric(`${logPrefix.replaceAll(':', '_')}_query_time_seconds`)
40
- };
41
33
  // allow us to stop queries on shut down
42
34
  this.shutDownController = new AbortController();
43
35
  // make sure we don't make a lot of noise in the logs
44
36
  setMaxListeners(Infinity, this.shutDownController.signal);
37
+ this.running = false;
45
38
  }
46
39
  isStarted() {
47
40
  return this.running;
@@ -50,6 +43,9 @@ export class QueryManager {
50
43
  * Starts the query manager
51
44
  */
52
45
  async start() {
46
+ if (this.running) {
47
+ return;
48
+ }
53
49
  this.running = true;
54
50
  // allow us to stop queries on shut down
55
51
  this.shutDownController = new AbortController();
@@ -67,7 +63,6 @@ export class QueryManager {
67
63
  if (!this.running) {
68
64
  throw new Error('QueryManager not started');
69
65
  }
70
- const stopQueryTimer = this.metrics.queryTime?.timer();
71
66
  if (options.signal == null) {
72
67
  // don't let queries run forever
73
68
  const signal = AbortSignal.timeout(DEFAULT_QUERY_TIMEOUT);
@@ -92,7 +87,6 @@ export class QueryManager {
92
87
  setMaxListeners(Infinity, signal, queryEarlyExitController.signal);
93
88
  const log = this.logger.forComponent(`${this.logPrefix}:query:` + uint8ArrayToString(key, 'base58btc'));
94
89
  // query a subset of peers up to `kBucketSize / 2` in length
95
- const startTime = Date.now();
96
90
  let queryFinished = false;
97
91
  try {
98
92
  if (options.isSelfQuery !== true && this.initialQuerySelfHasRun != null) {
@@ -101,7 +95,6 @@ export class QueryManager {
101
95
  this.initialQuerySelfHasRun = undefined;
102
96
  }
103
97
  log('query:start');
104
- this.metrics?.queries?.increment();
105
98
  const id = await convertBuffer(key);
106
99
  const peers = this.routingTable.closestPeers(id);
107
100
  const peersToQuery = peers.slice(0, Math.min(this.disjointPaths, peers.length));
@@ -148,9 +141,6 @@ export class QueryManager {
148
141
  queryFinished = true;
149
142
  }
150
143
  catch (err) {
151
- if (!queryFinished) {
152
- this.metrics?.errors?.increment();
153
- }
154
144
  if (!this.running && err.name === 'QueryAbortedError') {
155
145
  // ignore query aborted errors that were thrown during query manager shutdown
156
146
  }
@@ -164,8 +154,7 @@ export class QueryManager {
164
154
  queryEarlyExitController.abort();
165
155
  }
166
156
  signal.clear();
167
- stopQueryTimer?.();
168
- log('query:done in %dms', Date.now() - startTime);
157
+ log('query:done');
169
158
  }
170
159
  }
171
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,KAAK,EAAE,CAAC,EAAE,qBAAqB,EAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAoC3C;;GAEG;AACH,MAAM,OAAO,YAAY;IAChB,aAAa,CAAQ;IACX,KAAK,CAAQ;IACtB,kBAAkB,CAAiB;IACnC,OAAO,CAAS;IACP,MAAM,CAAiB;IACvB,MAAM,CAAQ;IACd,iBAAiB,CAAmB;IACpC,YAAY,CAAc;IACnC,sBAAsB,CAAwB;IACrC,SAAS,CAAQ;IACjB,OAAO,CAIvB;IAED,YAAa,UAAkC,EAAE,IAAsB;QACrE,MAAM,EAAE,aAAa,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAE5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAA;QAC3B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAA;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAA;QAErD,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,gBAAgB,CAAC;YAC/F,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC;YACnG,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC;SACtG,CAAA;QAED,wCAAwC;QACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,qDAAqD;QACrD,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,wCAAwC;QACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,qDAAqD;QACrD,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,CAAE,GAAG,CAAE,GAAe,EAAE,SAAoB,EAAE,UAAwB,EAAE;QAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAA;QAEtD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC3B,gCAAgC;YAChC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;YAEzD,6DAA6D;YAC7D,wDAAwD;YACxD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAEjC,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,MAAM;aACP,CAAA;QACH,CAAC;QAED,sEAAsE;QACtE,2DAA2D;QAC3D,MAAM,wBAAwB,GAAG,IAAI,eAAe,EAAE,CAAA;QAEtD,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM;YAC9B,wBAAwB,CAAC,MAAM;YAC/B,OAAO,CAAC,MAAM;SACf,CAAC,CAAA;QAEF,qEAAqE;QACrE,wDAAwD;QACxD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAA;QAElE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,SAAS,GAAG,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;QAEvG,4DAA4D;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,aAAa,GAAG,KAAK,CAAA;QAEzB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE,CAAC;gBACxE,GAAG,CAAC,wDAAwD,CAAC,CAAA;gBAE7D,MAAM,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAE7D,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAA;YACzC,CAAC;YAED,GAAG,CAAC,aAAa,CAAC,CAAA;YAClB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YAElC,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAChD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAE/E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;gBACxC,OAAM;YACR,CAAC;YAED,2CAA2C;YAC3C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE,CAAA;YAE/B,6CAA6C;YAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC7C,OAAO,SAAS,CAAC;oBACf,GAAG;oBACH,YAAY,EAAE,IAAI;oBAClB,SAAS,EAAE,IAAI,CAAC,MAAM;oBACtB,MAAM;oBACN,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,YAAY,CAAC,MAAM;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,GAAG;oBACH,SAAS;oBACT,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;iBAC1C,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,8FAA8F;YAC9F,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACjC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;gBACvC,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACnC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;wBACzD,qCAAqC;wBACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;4BAChE,SAAQ;wBACV,CAAC;wBAED,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACtC,CAAC;gBACH,CAAC;gBAED,MAAM,KAAK,CAAA;YACb,CAAC;YAED,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACnC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACtD,6EAA6E;YAC/E,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,GAAG,CAAC,oBAAoB,CAAC,CAAA;gBACzB,wBAAwB,CAAC,KAAK,EAAE,CAAA;YAClC,CAAC;YAED,MAAM,CAAC,KAAK,EAAE,CAAA;YAEd,cAAc,EAAE,EAAE,CAAA;YAClB,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { OperationMetrics } from './kad-dht.js';
1
2
  import type { PeerRouting } from './peer-routing/index.js';
2
3
  import type { RoutingTable } from './routing-table/index.js';
3
4
  import type { ComponentLogger, PeerId, Startable } from '@libp2p/interface';
@@ -11,6 +12,7 @@ export interface QuerySelfInit {
11
12
  initialInterval?: number;
12
13
  queryTimeout?: number;
13
14
  initialQuerySelfHasRun: DeferredPromise<void>;
15
+ operationMetrics: OperationMetrics;
14
16
  }
15
17
  export interface QuerySelfComponents {
16
18
  peerId: PeerId;
@@ -28,7 +30,7 @@ export declare class QuerySelf implements Startable {
28
30
  private readonly interval;
29
31
  private readonly initialInterval;
30
32
  private readonly queryTimeout;
31
- private started;
33
+ private running;
32
34
  private timeoutId?;
33
35
  private controller?;
34
36
  private initialQuerySelfHasRun?;
@@ -1 +1 @@
1
- {"version":3,"file":"query-self.d.ts","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAA+B;IACjD,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAuB;gBAEnC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa;IAejE,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAed,IAAI,IAAK,IAAI;IAYP,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CA6ElC"}
1
+ {"version":3,"file":"query-self.d.ts","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,gBAAgB,EAAE,gBAAgB,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAA+B;IACjD,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAuB;gBAEnC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa;IAejE,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAed,IAAI,IAAK,IAAI;IAYP,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CA6ElC"}
@@ -6,6 +6,7 @@ import take from 'it-take';
6
6
  import pDefer from 'p-defer';
7
7
  import { pEvent } from 'p-event';
8
8
  import { QUERY_SELF_INTERVAL, QUERY_SELF_TIMEOUT, K, QUERY_SELF_INITIAL_INTERVAL } from './constants.js';
9
+ import { timeOperationMethod } from './utils.js';
9
10
  /**
10
11
  * Receives notifications of new peers joining the network that support the DHT protocol
11
12
  */
@@ -18,32 +19,32 @@ export class QuerySelf {
18
19
  interval;
19
20
  initialInterval;
20
21
  queryTimeout;
21
- started;
22
+ running;
22
23
  timeoutId;
23
24
  controller;
24
25
  initialQuerySelfHasRun;
25
26
  querySelfPromise;
26
27
  constructor(components, init) {
27
- const { peerRouting, logPrefix, count, interval, queryTimeout, routingTable } = init;
28
28
  this.peerId = components.peerId;
29
- this.log = components.logger.forComponent(`${logPrefix}:query-self`);
30
- this.started = false;
31
- this.peerRouting = peerRouting;
32
- this.routingTable = routingTable;
33
- this.count = count ?? K;
34
- this.interval = interval ?? QUERY_SELF_INTERVAL;
29
+ this.log = components.logger.forComponent(`${init.logPrefix}:query-self`);
30
+ this.running = false;
31
+ this.peerRouting = init.peerRouting;
32
+ this.routingTable = init.routingTable;
33
+ this.count = init.count ?? K;
34
+ this.interval = init.interval ?? QUERY_SELF_INTERVAL;
35
35
  this.initialInterval = init.initialInterval ?? QUERY_SELF_INITIAL_INTERVAL;
36
- this.queryTimeout = queryTimeout ?? QUERY_SELF_TIMEOUT;
36
+ this.queryTimeout = init.queryTimeout ?? QUERY_SELF_TIMEOUT;
37
37
  this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;
38
+ this.querySelf = timeOperationMethod(this.querySelf.bind(this), init.operationMetrics, 'SELF_QUERY');
38
39
  }
39
40
  isStarted() {
40
- return this.started;
41
+ return this.running;
41
42
  }
42
43
  start() {
43
- if (this.started) {
44
+ if (this.running) {
44
45
  return;
45
46
  }
46
- this.started = true;
47
+ this.running = true;
47
48
  clearTimeout(this.timeoutId);
48
49
  this.timeoutId = setTimeout(() => {
49
50
  this.querySelf()
@@ -53,7 +54,7 @@ export class QuerySelf {
53
54
  }, this.initialInterval);
54
55
  }
55
56
  stop() {
56
- this.started = false;
57
+ this.running = false;
57
58
  if (this.timeoutId != null) {
58
59
  clearTimeout(this.timeoutId);
59
60
  }
@@ -62,7 +63,7 @@ export class QuerySelf {
62
63
  }
63
64
  }
64
65
  async querySelf() {
65
- if (!this.started) {
66
+ if (!this.running) {
66
67
  this.log('skip self-query because we are not started');
67
68
  return;
68
69
  }
@@ -71,7 +72,7 @@ export class QuerySelf {
71
72
  return this.querySelfPromise.promise;
72
73
  }
73
74
  this.querySelfPromise = pDefer();
74
- if (this.started) {
75
+ if (this.running) {
75
76
  this.controller = new AbortController();
76
77
  const signals = [this.controller.signal];
77
78
  // add a shorter timeout if we've already run our initial self query
@@ -113,7 +114,7 @@ export class QuerySelf {
113
114
  }
114
115
  this.querySelfPromise.resolve();
115
116
  this.querySelfPromise = undefined;
116
- if (!this.started) {
117
+ if (!this.running) {
117
118
  return;
118
119
  }
119
120
  this.timeoutId = setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"query-self.js","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-self.js","sourceRoot":"","sources":["../../src/query-self.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { TypedEventEmitter } from '@libp2p/interface';
2
+ import type { ContentRouting } from './content-routing/index.js';
3
+ import type { OperationMetrics } from './kad-dht.js';
4
+ import type { ComponentLogger, Metrics, PeerId } from '@libp2p/interface';
5
+ import type { AddressManager } from '@libp2p/interface-internal';
6
+ import type { AdaptiveTimeoutInit } from '@libp2p/utils/adaptive-timeout';
7
+ import type { Datastore } from 'interface-datastore';
8
+ import type { Mortice } from 'mortice';
9
+ export interface ReproviderComponents {
10
+ peerId: PeerId;
11
+ datastore: Datastore;
12
+ logger: ComponentLogger;
13
+ addressManager: AddressManager;
14
+ metrics?: Metrics;
15
+ }
16
+ export interface ReproviderInit {
17
+ logPrefix: string;
18
+ metricsPrefix: string;
19
+ datastorePrefix: string;
20
+ contentRouting: ContentRouting;
21
+ lock: Mortice;
22
+ operationMetrics: OperationMetrics;
23
+ concurrency?: number;
24
+ maxQueueSize?: number;
25
+ threshold?: number;
26
+ validity?: number;
27
+ interval?: number;
28
+ timeout?: Omit<AdaptiveTimeoutInit, 'metricsName' | 'metrics'>;
29
+ }
30
+ interface ReprovideEvents {
31
+ 'reprovide:start': CustomEvent;
32
+ 'reprovide:end': CustomEvent;
33
+ }
34
+ export declare class Reprovider extends TypedEventEmitter<ReprovideEvents> {
35
+ private readonly log;
36
+ private readonly reprovideQueue;
37
+ private readonly maxQueueSize;
38
+ private readonly datastore;
39
+ private timeout?;
40
+ private readonly reprovideTimeout;
41
+ private running;
42
+ private shutdownController?;
43
+ private readonly reprovideThreshold;
44
+ private readonly contentRouting;
45
+ private readonly datastorePrefix;
46
+ private readonly addressManager;
47
+ private readonly validity;
48
+ private readonly interval;
49
+ private readonly lock;
50
+ private readonly peerId;
51
+ constructor(components: ReproviderComponents, init: ReproviderInit);
52
+ start(): void;
53
+ stop(): void;
54
+ /**
55
+ * Check all provider records. Delete them if they have expired, reprovide
56
+ * them if the provider is us and the expiry is within the reprovide window.
57
+ */
58
+ private cleanUp;
59
+ private queueReprovide;
60
+ private reprovide;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=reprovider.d.ts.map