Skip to content

Commit 8b1f76d

Browse files
joshuakarptegefaulkes
authored andcommitted
Nodes refactoring:
- moved some functionality from `NodeManager` and `NodeGraph` to `NodeConnectionManager`. - Implementing `NodeConnectionManager.ts`. - extracted `NodeGraph` from `nodeManager`.
1 parent 46ba7b3 commit 8b1f76d

29 files changed

+1870
-1113
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"@matrixai/logger": "^2.1.0",
7878
"@matrixai/workers": "^1.2.5",
7979
"ajv": "^7.0.4",
80-
"async-mutex": "^0.2.4",
80+
"async-mutex": "^0.3.2",
8181
"bip39": "^3.0.3",
8282
"canonicalize": "^1.0.5",
8383
"cheerio": "^1.0.0-rc.5",

src/PolykeyAgent.ts

Lines changed: 62 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { Status } from './status';
1313
import { Schema } from './schema';
1414
import { VaultManager } from './vaults';
1515
import { ACL } from './acl';
16-
import { NodeManager } from './nodes';
16+
import { NodeConnectionManager, NodeGraph, NodeManager } from './nodes';
1717
import { NotificationsManager } from './notifications';
1818
import { GestaltGraph } from './gestalts';
1919
import { Sigchain } from './sigchain';
@@ -71,6 +71,8 @@ class PolykeyAgent {
7171
gestaltGraph,
7272
fwdProxy,
7373
revProxy,
74+
nodeGraph,
75+
nodeConnectionManager,
7476
nodeManager,
7577
discovery,
7678
vaultManager,
@@ -112,6 +114,8 @@ class PolykeyAgent {
112114
gestaltGraph?: GestaltGraph;
113115
fwdProxy?: ForwardProxy;
114116
revProxy?: ReverseProxy;
117+
nodeGraph?: NodeGraph;
118+
nodeConnectionManager?: NodeConnectionManager;
115119
nodeManager?: NodeManager;
116120
discovery?: Discovery;
117121
vaultManager?: VaultManager;
@@ -243,19 +247,35 @@ class PolykeyAgent {
243247
...reverseProxyConfig_,
244248
logger: logger.getChild(ReverseProxy.name),
245249
});
246-
nodeManager =
247-
nodeManager ??
248-
(await NodeManager.createNodeManager({
249-
db,
250-
seedNodes,
250+
nodeGraph =
251+
nodeGraph ??
252+
(await NodeGraph.createNodeGraph({
253+
db,
254+
fresh,
255+
keyManager,
256+
logger: logger.getChild(NodeGraph.name),
257+
}));
258+
nodeConnectionManager =
259+
nodeConnectionManager ??
260+
(await NodeConnectionManager.createNodeConnectionManager({
261+
keyManager,
262+
nodeGraph,
263+
fwdProxy,
264+
revProxy,
265+
seedNodes,
266+
logger: logger.getChild(NodeConnectionManager.name),
267+
}));
268+
nodeManager =
269+
nodeManager ??
270+
(await NodeManager.createNodeManager({
271+
db,
251272
sigchain,
252273
keyManager,
253-
fwdProxy,
254-
revProxy,
255-
logger: logger.getChild(NodeManager.name),
256-
fresh,
257-
}));
258-
// Discovery uses in-memory CreateDestroy pattern
274+
nodeGraph,
275+
nodeConnectionManager,
276+
logger: logger.getChild(NodeManager.name),
277+
}));
278+
// Discovery uses in-memory CreateDestroy pattern
259279
// Therefore it should be destroyed during stop
260280
discovery =
261281
discovery ??
@@ -271,7 +291,7 @@ class PolykeyAgent {
271291
vaultsKey: keyManager.vaultKey,
272292
vaultsPath,
273293
keyManager,
274-
nodeManager,
294+
nodeConnectionManager,
275295
gestaltGraph,
276296
acl,
277297
db,
@@ -338,6 +358,8 @@ class PolykeyAgent {
338358
gestaltGraph,
339359
fwdProxy,
340360
revProxy,
361+
nodeGraph,
362+
nodeConnectionManager,
341363
nodeManager,
342364
discovery,
343365
vaultManager,
@@ -368,6 +390,8 @@ class PolykeyAgent {
368390
public readonly gestaltGraph: GestaltGraph;
369391
public readonly fwdProxy: ForwardProxy;
370392
public readonly revProxy: ReverseProxy;
393+
public readonly nodeGraph: NodeGraph;
394+
public readonly nodeConnectionManager: NodeConnectionManager;
371395
public readonly nodeManager: NodeManager;
372396
public readonly discovery: Discovery;
373397
public readonly vaultManager: VaultManager;
@@ -391,6 +415,8 @@ class PolykeyAgent {
391415
gestaltGraph,
392416
fwdProxy,
393417
revProxy,
418+
nodeGraph,
419+
nodeConnectionManager,
394420
nodeManager,
395421
discovery,
396422
vaultManager,
@@ -412,6 +438,8 @@ class PolykeyAgent {
412438
gestaltGraph: GestaltGraph;
413439
fwdProxy: ForwardProxy;
414440
revProxy: ReverseProxy;
441+
nodeGraph: NodeGraph;
442+
nodeConnectionManager: NodeConnectionManager;
415443
nodeManager: NodeManager;
416444
discovery: Discovery;
417445
vaultManager: VaultManager;
@@ -434,6 +462,8 @@ class PolykeyAgent {
434462
this.gestaltGraph = gestaltGraph;
435463
this.fwdProxy = fwdProxy;
436464
this.revProxy = revProxy;
465+
this.nodeGraph = nodeGraph;
466+
this.nodeConnectionManager = nodeConnectionManager;
437467
this.nodeManager = nodeManager;
438468
this.discovery = discovery;
439469
this.vaultManager = vaultManager;
@@ -466,14 +496,17 @@ class PolykeyAgent {
466496
vaultManager: this.vaultManager,
467497
nodeManager: this.nodeManager,
468498
sigchain: this.sigchain,
469-
notificationsManager: this.notificationsManager,
470-
});
471-
const clientService = createClientService({
472-
pkAgent: this,
473-
discovery: this.discovery,
474-
gestaltGraph: this.gestaltGraph,
475-
identitiesManager: this.identitiesManager,
476-
keyManager: this.keyManager,
499+
nodeConnectionManager: this.nodeConnectionManager,
500+
notificationsManager: this.notificationsManager,
501+
});
502+
const clientService = createClientService({
503+
pkAgent: this,
504+
discovery: this.discovery,
505+
gestaltGraph: this.gestaltGraph,
506+
identitiesManager: this.identitiesManager,
507+
keyManager: this.keyManager,
508+
nodeGraph: this.nodeGraph,
509+
nodeConnectionManager: this.nodeConnectionManager,
477510
nodeManager: this.nodeManager,
478511
notificationsManager: this.notificationsManager,
479512
sessionManager: this.sessionManager,
@@ -527,8 +560,10 @@ class PolykeyAgent {
527560
ingressPort: networkConfig_.ingressPort,
528561
tlsConfig,
529562
});
530-
await this.nodeManager.start({ fresh });
531-
await this.nodeManager.getConnectionsToSeedNodes();
563+
await this.nodeConnectionManager.start();
564+
await this.nodeGraph.start({ fresh });
565+
await this.nodeManager.start();
566+
await this.nodeConnectionManager.getConnectionsToSeedNodes();
532567
await this.nodeManager.syncNodeGraph();
533568
await this.vaultManager.start({ fresh });
534569
await this.notificationsManager.start({ fresh });
@@ -577,6 +612,8 @@ class PolykeyAgent {
577612
await this.vaultManager.stop();
578613
await this.discovery.destroy();
579614
await this.nodeManager.stop();
615+
await this.nodeConnectionManager.stop();
616+
await this.nodeGraph.stop();
580617
await this.revProxy.stop();
581618
await this.fwdProxy.stop();
582619
await this.grpcServerAgent.stop();
@@ -600,6 +637,8 @@ class PolykeyAgent {
600637
await this.notificationsManager.destroy();
601638
await this.vaultManager.destroy();
602639
await this.nodeManager.destroy();
640+
await this.nodeConnectionManager.destroy();
641+
await this.nodeGraph.destroy();
603642
await this.gestaltGraph.destroy();
604643
await this.acl.destroy();
605644
await this.sigchain.destroy();

src/bootstrap/utils.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { Sigchain } from '../sigchain';
1313
import { ACL } from '../acl';
1414
import { GestaltGraph } from '../gestalts';
1515
import { ForwardProxy, ReverseProxy } from '../network';
16-
import { NodeManager } from '../nodes';
16+
import { NodeConnectionManager, NodeGraph, NodeManager } from '../nodes';
1717
import { VaultManager } from '../vaults';
1818
import { NotificationsManager } from '../notifications';
1919
import { mkdirExists } from '../utils';
@@ -138,21 +138,35 @@ async function bootstrapState({
138138
const revProxy = new ReverseProxy({
139139
logger: logger.getChild(ReverseProxy.name),
140140
});
141+
const nodeGraph = await NodeGraph.createNodeGraph({
142+
db,
143+
fresh,
144+
keyManager,
145+
logger: logger.getChild(NodeGraph.name),
146+
});
147+
const nodeConnectionManager =
148+
await NodeConnectionManager.createNodeConnectionManager({
149+
keyManager,
150+
nodeGraph,
151+
// SeedNodes: undefined, // I don't think this is needed for bootstrapping.
152+
fwdProxy,
153+
revProxy,
154+
logger: logger.getChild(NodeConnectionManager.name),
155+
});
141156
const nodeManager = await NodeManager.createNodeManager({
142157
db,
143158
keyManager,
159+
nodeGraph,
160+
nodeConnectionManager,
144161
sigchain,
145-
fwdProxy,
146-
revProxy,
147162
logger: logger.getChild(NodeManager.name),
148-
fresh,
149163
});
150164
const vaultManager = await VaultManager.createVaultManager({
151165
acl,
152166
db,
153167
gestaltGraph,
154168
keyManager,
155-
nodeManager,
169+
nodeConnectionManager,
156170
vaultsKey: keyManager.vaultKey,
157171
vaultsPath,
158172
logger: logger.getChild(VaultManager.name),

0 commit comments

Comments
 (0)