querysub 0.34.0 → 0.35.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "querysub",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "note1": "note on node-forge fork, see https://github.com/digitalbazaar/forge/issues/744 for details",
@@ -174,7 +174,7 @@ const IdentityController = SocketFunction.register(
174
174
  })
175
175
  );
176
176
 
177
- const changeIdentityOnce = cache(measureWrap(async function changeIdentityOnce(connectionId: { nodeId: string }) {
177
+ const changeIdentityOnce = cache(async function changeIdentityOnce(connectionId: { nodeId: string }) {
178
178
  let nodeId = connectionId.nodeId;
179
179
  let threadKeyCert = getThreadKeyCert();
180
180
  let issuer = getIdentityCA();
@@ -191,7 +191,7 @@ const changeIdentityOnce = cache(measureWrap(async function changeIdentityOnce(c
191
191
  IdentityController.nodes[nodeId].changeIdentity(signature, payload),
192
192
  () => new Error(`Timeout calling changeIdentity for ${nodeId}`)
193
193
  );
194
- }));
194
+ });
195
195
  SocketFunction.addGlobalClientHook(async function identityHook(context) {
196
196
  if (context.call.classGuid === IdentityController._classGuid) return;
197
197
  // If we are talking to a client they should already know who we are (they established the connection!)
@@ -275,8 +275,10 @@ async function runHeartbeatAuditLoop() {
275
275
  // We spent the money checking the node list, so we might as well update it
276
276
  setNodeIds(nodeIds);
277
277
 
278
+ let pendingDeadCount = 0;
279
+
278
280
  let removedNodeIds: string[] = [];
279
- for (let nodeId of nodeIds) {
281
+ await Promise.all(nodeIds.map(async nodeId => {
280
282
  let lastTime = Number((await archives().get(nodeId))?.toString()) || 0;
281
283
  if (lastTime < deadTime) {
282
284
  // Increment the dead count
@@ -290,14 +292,20 @@ async function runHeartbeatAuditLoop() {
290
292
  deadCount.delete(nodeId);
291
293
  } else {
292
294
  console.log(yellow(`Node ${nodeId} was found to be dead, last heartbeat at ${formatDateTime(lastTime)} < dead threshold at ${formatDateTime(deadTime)}, dead count ${count}/${DEAD_CHECK_COUNT}. Total nodes seen ${nodeIds.length}`));
295
+ pendingDeadCount++;
293
296
  }
294
297
  } else {
295
298
  deadCount.delete(nodeId);
296
299
  diskLog("Read node heartbeat", { nodeId, lastTime });
297
300
  }
301
+ }));
302
+ if (pendingDeadCount) {
303
+ console.log(blue(`Pending dead nodes ${pendingDeadCount}/${nodeIds.length}`));
298
304
  }
299
305
 
300
306
  if (removedNodeIds.length > 0) {
307
+ console.log(blue(`Removed ${removedNodeIds.length}/${nodeIds.length} nodes from node list`), { removedNodeIds });
308
+ await syncArchives();
301
309
  void tellEveryoneNodesChanges();
302
310
  }
303
311
  });