Skip to content

Commit

Permalink
Open refactor(daemon): Synchronize incarnateEndoBootstrap (merge #2149)
Browse files Browse the repository at this point in the history
Closes: #2086

Synchronizes the daemon's `incarnateEndoBootstrap()`, thereby concluding the synchronization effort. It should now be impossible to concurrently mutating the formula graph through the public API.
  • Loading branch information
rekmarks committed Mar 16, 2024
2 parents fdc6989 + a0f0759 commit 1740231
Showing 1 changed file with 40 additions and 26 deletions.
66 changes: 40 additions & 26 deletions packages/daemon/src/daemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -1451,42 +1451,56 @@ const makeDaemonCore = async (

/** @type {import('./types.js').DaemonCore['incarnateEndoBootstrap']} */
const incarnateEndoBootstrap = async specifiedFormulaNumber => {
const formulaNumber = await (specifiedFormulaNumber ?? randomHex512());
const endoFormulaIdentifier = formatId({
number: formulaNumber,
node: ownNodeIdentifier,
});
const identifiers = await formulaGraphJobs.enqueue(async () => {
const formulaNumber = await (specifiedFormulaNumber ?? randomHex512());
const endoFormulaIdentifier = formatId({
number: formulaNumber,
node: ownNodeIdentifier,
});

const { formulaIdentifier: defaultHostWorkerFormulaIdentifier } =
await incarnateNumberedWorker(await randomHex512());
const { formulaIdentifier: networksDirectoryFormulaIdentifier } =
await incarnateNetworksDirectory();
const { formulaIdentifier: newPeersFormulaIdentifier } =
await incarnateNumberedPetStore(peersFormulaNumber);
if (newPeersFormulaIdentifier !== peersFormulaIdentifier) {
assert.Fail`Peers PetStore formula identifier did not match expected value, expected ${peersFormulaIdentifier}, got ${newPeersFormulaIdentifier}`;
}
const { formulaIdentifier: defaultHostWorkerFormulaIdentifier } =
await incarnateNumberedWorker(await randomHex512());
const { formulaIdentifier: networksDirectoryFormulaIdentifier } =
await incarnateNetworksDirectory();
const { formulaIdentifier: newPeersFormulaIdentifier } =
await incarnateNumberedPetStore(peersFormulaNumber);
if (newPeersFormulaIdentifier !== peersFormulaIdentifier) {
assert.Fail`Peers PetStore formula identifier did not match expected value, expected ${peersFormulaIdentifier}, got ${newPeersFormulaIdentifier}`;
}

// Ensure the default host is incarnated and persisted.
const { formulaIdentifier: defaultHostFormulaIdentifier } =
await incarnateNumberedHost(
await incarnateHostDependencies({
endoFormulaIdentifier,
networksDirectoryFormulaIdentifier,
specifiedWorkerFormulaIdentifier: defaultHostWorkerFormulaIdentifier,
}),
);
// Ensure the default host is incarnated and persisted.
const { formulaIdentifier: defaultHostFormulaIdentifier } =
await incarnateNumberedHost(
await incarnateHostDependencies({
endoFormulaIdentifier,
networksDirectoryFormulaIdentifier,
specifiedWorkerFormulaIdentifier:
defaultHostWorkerFormulaIdentifier,
}),
);

return {
formulaNumber,
defaultHostFormulaIdentifier,
networksDirectoryFormulaIdentifier,
};
});

/** @type {import('./types.js').EndoFormula} */
const formula = {
type: 'endo',
networks: networksDirectoryFormulaIdentifier,
networks: identifiers.networksDirectoryFormulaIdentifier,
peers: peersFormulaIdentifier,
host: defaultHostFormulaIdentifier,
host: identifiers.defaultHostFormulaIdentifier,
leastAuthority: leastAuthorityFormulaIdentifier,
};

return /** @type {import('./types').IncarnateResult<import('./types').FarEndoBootstrap>} */ (
provideValueForNumberedFormula(formula.type, formulaNumber, formula)
provideValueForNumberedFormula(
formula.type,
identifiers.formulaNumber,
formula,
)
);
};

Expand Down

0 comments on commit 1740231

Please sign in to comment.