Skip to content

Commit

Permalink
Nodes refactoring:
Browse files Browse the repository at this point in the history
- moved some functionality from `NodeManager` and `NodeGraph` to `NodeConnectionManager`.
- Implementing `NodeConnectionManager.ts`.
- extracted `NodeGraph` from `nodeManager`.
  • Loading branch information
joshuakarp authored and tegefaulkes committed Jan 10, 2022
1 parent 46ba7b3 commit 8b1f76d
Show file tree
Hide file tree
Showing 29 changed files with 1,870 additions and 1,113 deletions.
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"@matrixai/logger": "^2.1.0",
"@matrixai/workers": "^1.2.5",
"ajv": "^7.0.4",
"async-mutex": "^0.2.4",
"async-mutex": "^0.3.2",
"bip39": "^3.0.3",
"canonicalize": "^1.0.5",
"cheerio": "^1.0.0-rc.5",
Expand Down
85 changes: 62 additions & 23 deletions src/PolykeyAgent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { Status } from './status';
import { Schema } from './schema';
import { VaultManager } from './vaults';
import { ACL } from './acl';
import { NodeManager } from './nodes';
import { NodeConnectionManager, NodeGraph, NodeManager } from './nodes';
import { NotificationsManager } from './notifications';
import { GestaltGraph } from './gestalts';
import { Sigchain } from './sigchain';
Expand Down Expand Up @@ -71,6 +71,8 @@ class PolykeyAgent {
gestaltGraph,
fwdProxy,
revProxy,
nodeGraph,
nodeConnectionManager,
nodeManager,
discovery,
vaultManager,
Expand Down Expand Up @@ -112,6 +114,8 @@ class PolykeyAgent {
gestaltGraph?: GestaltGraph;
fwdProxy?: ForwardProxy;
revProxy?: ReverseProxy;
nodeGraph?: NodeGraph;
nodeConnectionManager?: NodeConnectionManager;
nodeManager?: NodeManager;
discovery?: Discovery;
vaultManager?: VaultManager;
Expand Down Expand Up @@ -243,19 +247,35 @@ class PolykeyAgent {
...reverseProxyConfig_,
logger: logger.getChild(ReverseProxy.name),
});
nodeManager =
nodeManager ??
(await NodeManager.createNodeManager({
db,
seedNodes,
nodeGraph =
nodeGraph ??
(await NodeGraph.createNodeGraph({
db,
fresh,
keyManager,
logger: logger.getChild(NodeGraph.name),
}));
nodeConnectionManager =
nodeConnectionManager ??
(await NodeConnectionManager.createNodeConnectionManager({
keyManager,
nodeGraph,
fwdProxy,
revProxy,
seedNodes,
logger: logger.getChild(NodeConnectionManager.name),
}));
nodeManager =
nodeManager ??
(await NodeManager.createNodeManager({
db,
sigchain,
keyManager,
fwdProxy,
revProxy,
logger: logger.getChild(NodeManager.name),
fresh,
}));
// Discovery uses in-memory CreateDestroy pattern
nodeGraph,
nodeConnectionManager,
logger: logger.getChild(NodeManager.name),
}));
// Discovery uses in-memory CreateDestroy pattern
// Therefore it should be destroyed during stop
discovery =
discovery ??
Expand All @@ -271,7 +291,7 @@ class PolykeyAgent {
vaultsKey: keyManager.vaultKey,
vaultsPath,
keyManager,
nodeManager,
nodeConnectionManager,
gestaltGraph,
acl,
db,
Expand Down Expand Up @@ -338,6 +358,8 @@ class PolykeyAgent {
gestaltGraph,
fwdProxy,
revProxy,
nodeGraph,
nodeConnectionManager,
nodeManager,
discovery,
vaultManager,
Expand Down Expand Up @@ -368,6 +390,8 @@ class PolykeyAgent {
public readonly gestaltGraph: GestaltGraph;
public readonly fwdProxy: ForwardProxy;
public readonly revProxy: ReverseProxy;
public readonly nodeGraph: NodeGraph;
public readonly nodeConnectionManager: NodeConnectionManager;
public readonly nodeManager: NodeManager;
public readonly discovery: Discovery;
public readonly vaultManager: VaultManager;
Expand All @@ -391,6 +415,8 @@ class PolykeyAgent {
gestaltGraph,
fwdProxy,
revProxy,
nodeGraph,
nodeConnectionManager,
nodeManager,
discovery,
vaultManager,
Expand All @@ -412,6 +438,8 @@ class PolykeyAgent {
gestaltGraph: GestaltGraph;
fwdProxy: ForwardProxy;
revProxy: ReverseProxy;
nodeGraph: NodeGraph;
nodeConnectionManager: NodeConnectionManager;
nodeManager: NodeManager;
discovery: Discovery;
vaultManager: VaultManager;
Expand All @@ -434,6 +462,8 @@ class PolykeyAgent {
this.gestaltGraph = gestaltGraph;
this.fwdProxy = fwdProxy;
this.revProxy = revProxy;
this.nodeGraph = nodeGraph;
this.nodeConnectionManager = nodeConnectionManager;
this.nodeManager = nodeManager;
this.discovery = discovery;
this.vaultManager = vaultManager;
Expand Down Expand Up @@ -466,14 +496,17 @@ class PolykeyAgent {
vaultManager: this.vaultManager,
nodeManager: this.nodeManager,
sigchain: this.sigchain,
notificationsManager: this.notificationsManager,
});
const clientService = createClientService({
pkAgent: this,
discovery: this.discovery,
gestaltGraph: this.gestaltGraph,
identitiesManager: this.identitiesManager,
keyManager: this.keyManager,
nodeConnectionManager: this.nodeConnectionManager,
notificationsManager: this.notificationsManager,
});
const clientService = createClientService({
pkAgent: this,
discovery: this.discovery,
gestaltGraph: this.gestaltGraph,
identitiesManager: this.identitiesManager,
keyManager: this.keyManager,
nodeGraph: this.nodeGraph,
nodeConnectionManager: this.nodeConnectionManager,
nodeManager: this.nodeManager,
notificationsManager: this.notificationsManager,
sessionManager: this.sessionManager,
Expand Down Expand Up @@ -527,8 +560,10 @@ class PolykeyAgent {
ingressPort: networkConfig_.ingressPort,
tlsConfig,
});
await this.nodeManager.start({ fresh });
await this.nodeManager.getConnectionsToSeedNodes();
await this.nodeConnectionManager.start();
await this.nodeGraph.start({ fresh });
await this.nodeManager.start();
await this.nodeConnectionManager.getConnectionsToSeedNodes();
await this.nodeManager.syncNodeGraph();
await this.vaultManager.start({ fresh });
await this.notificationsManager.start({ fresh });
Expand Down Expand Up @@ -577,6 +612,8 @@ class PolykeyAgent {
await this.vaultManager.stop();
await this.discovery.destroy();
await this.nodeManager.stop();
await this.nodeConnectionManager.stop();
await this.nodeGraph.stop();
await this.revProxy.stop();
await this.fwdProxy.stop();
await this.grpcServerAgent.stop();
Expand All @@ -600,6 +637,8 @@ class PolykeyAgent {
await this.notificationsManager.destroy();
await this.vaultManager.destroy();
await this.nodeManager.destroy();
await this.nodeConnectionManager.destroy();
await this.nodeGraph.destroy();
await this.gestaltGraph.destroy();
await this.acl.destroy();
await this.sigchain.destroy();
Expand Down
24 changes: 19 additions & 5 deletions src/bootstrap/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { Sigchain } from '../sigchain';
import { ACL } from '../acl';
import { GestaltGraph } from '../gestalts';
import { ForwardProxy, ReverseProxy } from '../network';
import { NodeManager } from '../nodes';
import { NodeConnectionManager, NodeGraph, NodeManager } from '../nodes';
import { VaultManager } from '../vaults';
import { NotificationsManager } from '../notifications';
import { mkdirExists } from '../utils';
Expand Down Expand Up @@ -138,21 +138,35 @@ async function bootstrapState({
const revProxy = new ReverseProxy({
logger: logger.getChild(ReverseProxy.name),
});
const nodeGraph = await NodeGraph.createNodeGraph({
db,
fresh,
keyManager,
logger: logger.getChild(NodeGraph.name),
});
const nodeConnectionManager =
await NodeConnectionManager.createNodeConnectionManager({
keyManager,
nodeGraph,
// SeedNodes: undefined, // I don't think this is needed for bootstrapping.
fwdProxy,
revProxy,
logger: logger.getChild(NodeConnectionManager.name),
});
const nodeManager = await NodeManager.createNodeManager({
db,
keyManager,
nodeGraph,
nodeConnectionManager,
sigchain,
fwdProxy,
revProxy,
logger: logger.getChild(NodeManager.name),
fresh,
});
const vaultManager = await VaultManager.createVaultManager({
acl,
db,
gestaltGraph,
keyManager,
nodeManager,
nodeConnectionManager,
vaultsKey: keyManager.vaultKey,
vaultsPath,
logger: logger.getChild(VaultManager.name),
Expand Down
Loading

0 comments on commit 8b1f76d

Please sign in to comment.