@aztec/prover-client 0.0.1-commit.321f6a9 → 0.0.1-commit.330febf
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/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -3
- package/dest/proving_broker/broker_prover_facade.d.ts +1 -1
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +8 -1
- package/dest/proving_broker/proving_broker.d.ts +2 -1
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +145 -70
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +4 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +25 -1
- package/dest/proving_broker/proving_broker_database.d.ts +13 -1
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/rpc.d.ts +13 -4
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +14 -3
- package/package.json +15 -15
- package/src/mocks/fixtures.ts +2 -4
- package/src/proving_broker/broker_prover_facade.ts +8 -1
- package/src/proving_broker/proving_broker.ts +138 -69
- package/src/proving_broker/proving_broker_database/memory.ts +6 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +29 -1
- package/src/proving_broker/proving_broker_database.ts +14 -0
- package/src/proving_broker/rpc.ts +16 -0
package/dest/mocks/fixtures.d.ts
CHANGED
|
@@ -17,4 +17,4 @@ export declare function getSimulator(config: {
|
|
|
17
17
|
}, logger?: Logger): Promise<CircuitSimulator>;
|
|
18
18
|
export declare const makeGlobals: (blockNumber: number, slotNumber?: number, overrides?: Partial<FieldsOf<GlobalVariables> & FieldsOf<CheckpointConstantData>>) => GlobalVariables;
|
|
19
19
|
export declare const makeCheckpointConstants: (slotNumber: number, overrides?: Partial<FieldsOf<CheckpointConstantData>>) => CheckpointConstantData;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2Nrcy9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBK0MsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFlbkQsZUFBTyxNQUFNLG9CQUFvQjs7Ozs7OztjQWtDaEMsQ0FBQztBQUVGLHdCQUFzQixZQUFZLENBQ2hDLE1BQU0sRUFBRTtJQUFFLG9CQUFvQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFBQyxjQUFjLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtDQUFFLEVBQ3hGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FDZCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FnQjNCO0FBRUQsZUFBTyxNQUFNLFdBQVcsa0pBaUJ2QixDQUFDO0FBRUYsZUFBTyxNQUFNLHVCQUF1Qix1R0FnQm5DLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAenD,eAAO,MAAM,oBAAoB;;;;;;;cAkChC,CAAC;AAEF,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxF,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,eAAO,MAAM,WAAW,kJAiBvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,uGAgBnC,CAAC"}
|
package/dest/mocks/fixtures.js
CHANGED
|
@@ -12,11 +12,11 @@ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
|
12
12
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
13
13
|
import { promises as fs } from 'fs';
|
|
14
14
|
import path from 'path';
|
|
15
|
-
const {
|
|
15
|
+
const { TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', BB_SKIP_CLEANUP = '', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '' } = process.env;
|
|
16
16
|
// Determines if we have access to the bb binary and a tmp folder for temp files
|
|
17
17
|
export const getEnvironmentConfig = async (logger)=>{
|
|
18
18
|
try {
|
|
19
|
-
const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../
|
|
19
|
+
const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../labs-aztec-toolchain/bin')}/bb-avm`;
|
|
20
20
|
await fs.access(expectedBBPath, fs.constants.R_OK);
|
|
21
21
|
const tempWorkingDirectory = `${TEMP_DIR}/${randomBytes(4).toString('hex')}`;
|
|
22
22
|
const bbWorkingDirectory = BB_WORKING_DIRECTORY ? BB_WORKING_DIRECTORY : `${tempWorkingDirectory}/bb`;
|
|
@@ -24,7 +24,7 @@ export const getEnvironmentConfig = async (logger)=>{
|
|
|
24
24
|
recursive: true
|
|
25
25
|
});
|
|
26
26
|
logger.info(`Found native BB binary at ${expectedBBPath} with working directory ${bbWorkingDirectory}`);
|
|
27
|
-
const expectedAcvmPath = ACVM_BINARY_PATH ? ACVM_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../
|
|
27
|
+
const expectedAcvmPath = ACVM_BINARY_PATH ? ACVM_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../labs-aztec-toolchain/bin')}/acvm`;
|
|
28
28
|
await fs.access(expectedAcvmPath, fs.constants.R_OK);
|
|
29
29
|
const acvmWorkingDirectory = ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : `${tempWorkingDirectory}/acvm`;
|
|
30
30
|
await fs.mkdir(acvmWorkingDirectory, {
|
|
@@ -52,4 +52,4 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
52
52
|
getRootRollupProof(input: RootRollupPrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
53
53
|
private generateId;
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJva2VyX3Byb3Zlcl9mYWNhZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9icm9rZXJfcHJvdmVyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFDViw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHlDQUF5QyxFQUN6QyxzQkFBc0IsRUFDdkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUlMLEtBQUssa0JBQWtCLEVBR3ZCLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssbUJBQW1CLEVBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQXNCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUNWLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsd0NBQXdDLEVBQ3hDLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIseUNBQXlDLEVBQ3pDLG9DQUFvQyxFQUNwQyxrQ0FBa0MsRUFDbEMsb0NBQW9DLEVBQ3BDLDRCQUE0QixFQUM1QixpQ0FBaUMsRUFDakMsNENBQTRDLEVBQzVDLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDckIsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQW9C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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAIL,KAAK,kBAAkB,EAGvB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAsB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,wCAAwC,EACxC,iCAAiC,EACjC,4BAA4B,EAC5B,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,iCAAiC,EACjC,4CAA4C,EAC5C,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiB3E,qBAAa,yBAA0B,YAAW,mBAAmB;IAQjE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB,CAAC;IACzB,OAAO,CAAC,cAAc;IAVxB,OAAO,CAAC,IAAI,CAA4C;IACxD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,MAAM,EAAE,kBAAkB,EAC1B,UAAU,GAAE,UAAmC,EAC/C,gBAAgB,CAAC,wBAAY,EAC7B,cAAc,SAAO,EAC7B,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;YA0Cf,UAAU;
|
|
1
|
+
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,7 +83,14 @@ export class BrokerCircuitProverFacade {
|
|
|
83
83
|
}
|
|
84
84
|
try {
|
|
85
85
|
const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
|
|
86
|
-
job
|
|
86
|
+
// Only retain the inputs URI on the long-lived job when a failed-proof store is configured: it is
|
|
87
|
+
// read solely by `backupFailedProofInputs` on failure. With the default `InlineProofStore` the URI
|
|
88
|
+
// embeds the full circuit inputs, so retaining it for every in-flight job would pin those inputs in
|
|
89
|
+
// memory until the job settles for no purpose when no failed-proof store exists. The broker still
|
|
90
|
+
// receives the URI below regardless; this only governs what the facade holds onto.
|
|
91
|
+
if (this.failedProofStore) {
|
|
92
|
+
job.inputsUri = inputsUri;
|
|
93
|
+
}
|
|
87
94
|
// Send the job to the broker
|
|
88
95
|
const jobStatus = await this.broker.enqueueProvingJob({
|
|
89
96
|
id,
|
|
@@ -15,6 +15,7 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
15
15
|
private queues;
|
|
16
16
|
private jobsCache;
|
|
17
17
|
private resultsCache;
|
|
18
|
+
private pendingResults;
|
|
18
19
|
private enqueuedAt;
|
|
19
20
|
private inProgress;
|
|
20
21
|
private retries;
|
|
@@ -73,4 +74,4 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
73
74
|
* is to get picked up by agents
|
|
74
75
|
*/
|
|
75
76
|
export declare const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[];
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2Jyb2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLOUQsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssUUFBUSxFQUNiLEtBQUssVUFBVSxFQUNmLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGdCQUFnQixFQUV0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUloSCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBNkIsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQTRCMUU7OztHQUdHO0FBQ0gscUJBQWEsYUFBYyxZQUFXLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLFNBQVM7O0lBd0YxRyxPQUFPLENBQUMsUUFBUTtJQWtCaEIsT0FBTyxDQUFDLE1BQU07SUF6R2hCLE9BQU8sQ0FBQyxNQUFNLENBNkJaO0lBSUYsT0FBTyxDQUFDLFNBQVMsQ0FBK0M7SUFJaEUsT0FBTyxDQUFDLFlBQVksQ0FBMEM7SUFJOUQsT0FBTyxDQUFDLGNBQWMsQ0FBb0Q7SUFHMUUsT0FBTyxDQUFDLFVBQVUsQ0FBa0M7SUFNcEQsT0FBTyxDQUFDLFVBQVUsQ0FBK0M7SUFHakUsT0FBTyxDQUFDLE9BQU8sQ0FBbUM7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAK9D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAIhH,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,18 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
9
9
|
import assert from 'assert';
|
|
10
10
|
import { defaultProverBrokerConfig } from './config.js';
|
|
11
11
|
import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.js';
|
|
12
|
+
function toJobMetadata(job) {
|
|
13
|
+
return {
|
|
14
|
+
id: job.id,
|
|
15
|
+
type: job.type,
|
|
16
|
+
epochNumber: job.epochNumber
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function toSettledRecord(result) {
|
|
20
|
+
return result.status === 'fulfilled' ? {
|
|
21
|
+
status: 'fulfilled'
|
|
22
|
+
} : result;
|
|
23
|
+
}
|
|
12
24
|
/**
|
|
13
25
|
* A broker that manages proof requests and distributes them to workers based on their priority.
|
|
14
26
|
* It takes a backend that is responsible for storing and retrieving proof requests and results.
|
|
@@ -16,11 +28,17 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
16
28
|
database;
|
|
17
29
|
logger;
|
|
18
30
|
queues;
|
|
19
|
-
//
|
|
20
|
-
//
|
|
31
|
+
// Scheduling metadata for every known job (id, type, epochNumber). The large `inputsUri` is NOT held
|
|
32
|
+
// here — it lives in the database and is read on demand when a job is dispatched to an agent.
|
|
21
33
|
jobsCache;
|
|
22
|
-
//
|
|
34
|
+
// Settled status for every settled job. The large fulfilled proof `value` is NOT held here — it lives
|
|
35
|
+
// in the database (read on demand in getProvingJobStatus) and, transiently, in `pendingResults` while
|
|
36
|
+
// its database write is in flight. Small payloads (rejected reason, aborted) are kept inline.
|
|
23
37
|
resultsCache;
|
|
38
|
+
// Transient hold of a fulfilled result's full value, from the moment it settles until its database
|
|
39
|
+
// write commits, so status reads are read-your-writes without retaining every proof. Evicted once the
|
|
40
|
+
// value is durable in the database; kept only if that write failed (preserving the result in memory).
|
|
41
|
+
pendingResults;
|
|
24
42
|
// tracks when each job was enqueued
|
|
25
43
|
enqueuedAt;
|
|
26
44
|
// keeps track of which jobs are currently being processed
|
|
@@ -30,7 +48,8 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
30
48
|
inProgress;
|
|
31
49
|
// keep track of which proving job has been retried
|
|
32
50
|
retries;
|
|
33
|
-
// a map of promises that
|
|
51
|
+
// a map of promises that are resolved when a job settles. Carries no payload (settled status/results
|
|
52
|
+
// are read from resultsCache/pendingResults/DB) so it never pins a proof value in memory.
|
|
34
53
|
promises;
|
|
35
54
|
cleanupPromise;
|
|
36
55
|
msTimeSource;
|
|
@@ -77,6 +96,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
77
96
|
};
|
|
78
97
|
this.jobsCache = new Map();
|
|
79
98
|
this.resultsCache = new Map();
|
|
99
|
+
this.pendingResults = new Map();
|
|
80
100
|
this.enqueuedAt = new Map();
|
|
81
101
|
this.inProgress = new Map();
|
|
82
102
|
this.retries = new Map();
|
|
@@ -120,11 +140,11 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
120
140
|
provingJobId: item.id,
|
|
121
141
|
status: result ? result.status : 'pending'
|
|
122
142
|
});
|
|
123
|
-
this.jobsCache.set(item.id, item);
|
|
143
|
+
this.jobsCache.set(item.id, toJobMetadata(item));
|
|
124
144
|
this.promises.set(item.id, promiseWithResolvers());
|
|
125
145
|
if (result) {
|
|
126
|
-
this.promises.get(item.id).resolve(
|
|
127
|
-
this.resultsCache.set(item.id, result);
|
|
146
|
+
this.promises.get(item.id).resolve();
|
|
147
|
+
this.resultsCache.set(item.id, toSettledRecord(result));
|
|
128
148
|
} else {
|
|
129
149
|
this.enqueueJobInternal(item);
|
|
130
150
|
}
|
|
@@ -148,13 +168,13 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
148
168
|
return this.#cancelProvingJob(id);
|
|
149
169
|
}
|
|
150
170
|
getProvingJobStatus(id) {
|
|
151
|
-
return
|
|
171
|
+
return this.#getProvingJobStatus(id);
|
|
152
172
|
}
|
|
153
173
|
getCompletedJobs(ids) {
|
|
154
174
|
return this.#getCompletedJobs(ids);
|
|
155
175
|
}
|
|
156
176
|
getProvingJob(filter) {
|
|
157
|
-
return
|
|
177
|
+
return this.#getProvingJob(filter);
|
|
158
178
|
}
|
|
159
179
|
reportProvingJobSuccess(id, value, filter) {
|
|
160
180
|
return this.#reportProvingJobSuccess(id, value, filter);
|
|
@@ -163,7 +183,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
163
183
|
return this.#reportProvingJobError(id, err, retry, filter);
|
|
164
184
|
}
|
|
165
185
|
reportProvingJobProgress(id, startedAt, filter) {
|
|
166
|
-
return
|
|
186
|
+
return this.#reportProvingJobProgress(id, startedAt, filter);
|
|
167
187
|
}
|
|
168
188
|
async replayProvingJob(jobId, type, epochNumber, inputsUri) {
|
|
169
189
|
if (!this.debugReplayEnabled) {
|
|
@@ -184,7 +204,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
184
204
|
epochNumber,
|
|
185
205
|
inputsUri
|
|
186
206
|
};
|
|
187
|
-
this.jobsCache.set(jobId, job);
|
|
207
|
+
this.jobsCache.set(jobId, toJobMetadata(job));
|
|
188
208
|
await this.database.addProvingJob(job);
|
|
189
209
|
this.enqueueJobInternal(job);
|
|
190
210
|
return {
|
|
@@ -192,11 +212,19 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
192
212
|
};
|
|
193
213
|
}
|
|
194
214
|
async #enqueueProvingJob(job) {
|
|
195
|
-
//
|
|
196
|
-
|
|
215
|
+
// The status returned to the caller reflects the job's state at the start of this call: `not-found`
|
|
216
|
+
// for a brand-new job (it did not exist yet), or the cached status for one already known. Crucially
|
|
217
|
+
// this must NOT `await` before the synchronous `jobsCache`/`resultsCache` gate below, or the
|
|
218
|
+
// enqueue/revive lock would no longer hold. So the not-found default is set synchronously here and
|
|
219
|
+
// the cached branch computes the real status (which may read the DB) only when it returns.
|
|
220
|
+
let jobStatus = {
|
|
221
|
+
status: 'not-found'
|
|
222
|
+
};
|
|
197
223
|
if (this.jobsCache.has(job.id)) {
|
|
198
224
|
const existing = this.jobsCache.get(job.id);
|
|
199
|
-
|
|
225
|
+
// Identity check is metadata-only: `inputsUri` now lives in the database, not memory, and job ids
|
|
226
|
+
// are content-addressed (same id ⇒ same inputs), so a mismatch shows up in id/type/epochNumber.
|
|
227
|
+
assert.deepStrictEqual(toJobMetadata(job), existing, 'Duplicate proving job ID');
|
|
200
228
|
if (this.resultsCache.get(job.id)?.status === 'aborted') {
|
|
201
229
|
// The producer is re-requesting a job it previously cancelled: revive it rather than
|
|
202
230
|
// returning the cached abort, clearing the aborted state in memory and in the database so the
|
|
@@ -210,23 +238,30 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
210
238
|
// single synchronous span (no await in between), and only then await the database. Because a
|
|
211
239
|
// concurrent re-request can only interleave at that await — by which point `jobsCache` is
|
|
212
240
|
// populated again and the aborted result is gone — it falls into the cached branch and no-ops,
|
|
213
|
-
// so the job is enqueued exactly once. (`cleanUpProvingJobState` also drops the promise,
|
|
214
|
-
//
|
|
241
|
+
// so the job is enqueued exactly once. (`cleanUpProvingJobState` also drops the promise, so
|
|
242
|
+
// `enqueueJobInternal` below mints a fresh one for the retry.) This holds unchanged with the
|
|
243
|
+
// slimmer caches: `jobsCache` (now metadata) and `resultsCache` (now settled status) are still
|
|
244
|
+
// synchronous in-memory maps, so the tear-down + re-set span still contains no await.
|
|
215
245
|
this.logger.info(`Reviving aborted proving job id=${job.id} epochNumber=${job.epochNumber}`, {
|
|
216
246
|
provingJobId: job.id
|
|
217
247
|
});
|
|
218
248
|
this.cleanUpProvingJobState([
|
|
219
249
|
job.id
|
|
220
250
|
]);
|
|
221
|
-
this.jobsCache.set(job.id, job);
|
|
251
|
+
this.jobsCache.set(job.id, toJobMetadata(job));
|
|
222
252
|
await this.database.deleteProvingJobResult(job.id);
|
|
223
|
-
|
|
253
|
+
// The job is re-set in the cache and about to be re-enqueued below: its start status is in-queue.
|
|
254
|
+
jobStatus = {
|
|
255
|
+
status: 'in-queue'
|
|
256
|
+
};
|
|
224
257
|
} else {
|
|
225
258
|
this.logger.warn(`Cached proving job id=${job.id} epochNumber=${job.epochNumber}. Not enqueuing again`, {
|
|
226
259
|
provingJobId: job.id
|
|
227
260
|
});
|
|
228
261
|
this.instrumentation.incCachedJobs(job.type);
|
|
229
|
-
|
|
262
|
+
// Return the job's current status. This reads the fulfilled proof value from the DB when needed;
|
|
263
|
+
// the await is fine here because this branch does not enqueue, so it is outside the lock span.
|
|
264
|
+
return await this.#getProvingJobStatus(job.id);
|
|
230
265
|
}
|
|
231
266
|
}
|
|
232
267
|
if (this.isJobStale(job)) {
|
|
@@ -240,7 +275,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
240
275
|
});
|
|
241
276
|
try {
|
|
242
277
|
// do this first so it acts as a "lock". If this job is enqueued again while we're saving it the if at the top will catch it.
|
|
243
|
-
this.jobsCache.set(job.id, job);
|
|
278
|
+
this.jobsCache.set(job.id, toJobMetadata(job));
|
|
244
279
|
await this.database.addProvingJob(job);
|
|
245
280
|
this.enqueueJobInternal(job);
|
|
246
281
|
this.instrumentation.incTotalJobs(job.type);
|
|
@@ -273,11 +308,10 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
273
308
|
// notifies the current waiter. Unlike a completion or failure this is not terminal: re-enqueuing
|
|
274
309
|
// the same job id revives it (see #enqueueProvingJob), so the abort never permanently blocks the
|
|
275
310
|
// proof.
|
|
276
|
-
|
|
311
|
+
this.resultsCache.set(id, {
|
|
277
312
|
status: 'aborted'
|
|
278
|
-
};
|
|
279
|
-
this.
|
|
280
|
-
this.promises.get(id)?.resolve(result);
|
|
313
|
+
});
|
|
314
|
+
this.promises.get(id)?.resolve();
|
|
281
315
|
this.completedJobNotifications.push(id);
|
|
282
316
|
this.instrumentation.incAbortedJobs(job.type);
|
|
283
317
|
try {
|
|
@@ -295,35 +329,49 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
295
329
|
this.jobsCache.delete(id);
|
|
296
330
|
const deferred = this.promises.get(id);
|
|
297
331
|
if (deferred) {
|
|
298
|
-
deferred.resolve(
|
|
299
|
-
status: 'rejected',
|
|
300
|
-
reason: 'Proving job cleaned up'
|
|
301
|
-
});
|
|
332
|
+
deferred.resolve();
|
|
302
333
|
}
|
|
303
334
|
this.promises.delete(id);
|
|
304
335
|
this.resultsCache.delete(id);
|
|
336
|
+
this.pendingResults.delete(id);
|
|
305
337
|
this.inProgress.delete(id);
|
|
306
338
|
this.retries.delete(id);
|
|
307
339
|
this.enqueuedAt.delete(id);
|
|
308
340
|
}
|
|
309
341
|
this.completedJobNotifications = this.completedJobNotifications.filter((id)=>!idsToClean.has(id));
|
|
310
342
|
}
|
|
311
|
-
#getProvingJobStatus(id) {
|
|
312
|
-
const
|
|
313
|
-
if (
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
343
|
+
async #getProvingJobStatus(id) {
|
|
344
|
+
const settled = this.resultsCache.get(id);
|
|
345
|
+
if (settled) {
|
|
346
|
+
if (settled.status !== 'fulfilled') {
|
|
347
|
+
// rejected/aborted carry their (small) payload inline.
|
|
348
|
+
return settled;
|
|
349
|
+
}
|
|
350
|
+
// A fulfilled job's proof value is not held in memory: serve it from the transient hold if its
|
|
351
|
+
// database write is still in flight, otherwise read it back from the database.
|
|
352
|
+
const full = this.pendingResults.get(id) ?? await this.database.getProvingJobResult(id);
|
|
353
|
+
if (full?.status === 'fulfilled') {
|
|
354
|
+
return full;
|
|
322
355
|
}
|
|
356
|
+
// Settled as fulfilled but the value is nowhere to be found — should not happen (it is held in
|
|
357
|
+
// pendingResults until its DB write commits). Report not-found rather than a torn result.
|
|
358
|
+
this.logger.error(`Fulfilled proving job id=${id} has no retrievable result value`, {
|
|
359
|
+
provingJobId: id
|
|
360
|
+
});
|
|
361
|
+
return {
|
|
362
|
+
status: 'not-found'
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
// no result yet, check if we know the item
|
|
366
|
+
const item = this.jobsCache.get(id);
|
|
367
|
+
if (!item) {
|
|
323
368
|
return {
|
|
324
|
-
status:
|
|
369
|
+
status: 'not-found'
|
|
325
370
|
};
|
|
326
371
|
}
|
|
372
|
+
return {
|
|
373
|
+
status: this.inProgress.has(id) ? 'in-progress' : 'in-queue'
|
|
374
|
+
};
|
|
327
375
|
}
|
|
328
376
|
#getCompletedJobs(ids) {
|
|
329
377
|
const completedJobs = ids.filter((id)=>this.resultsCache.has(id));
|
|
@@ -331,7 +379,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
331
379
|
this.completedJobNotifications = [];
|
|
332
380
|
return Promise.resolve(notifications.concat(completedJobs));
|
|
333
381
|
}
|
|
334
|
-
#getProvingJob(filter = {
|
|
382
|
+
async #getProvingJob(filter = {
|
|
335
383
|
allowList: []
|
|
336
384
|
}) {
|
|
337
385
|
const allowedProofs = Array.isArray(filter.allowList) && filter.allowList.length > 0 ? [
|
|
@@ -346,20 +394,43 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
346
394
|
// this can happen if the broker crashes and restarts
|
|
347
395
|
// it's possible agents will report progress or results for jobs that are in the queue (after the restart)
|
|
348
396
|
while(enqueuedJob = queue.getImmediate()){
|
|
349
|
-
const
|
|
350
|
-
if (
|
|
397
|
+
const meta = this.jobsCache.get(enqueuedJob.id);
|
|
398
|
+
if (meta && !this.inProgress.has(enqueuedJob.id) && !this.resultsCache.has(enqueuedJob.id)) {
|
|
351
399
|
const time = this.msTimeSource();
|
|
352
|
-
|
|
353
|
-
|
|
400
|
+
// Claim the job synchronously (before the await below) so a concurrent dispatch can't re-pick
|
|
401
|
+
// it. The same id can sit in a queue more than once (an abort leaves a stale entry that a
|
|
402
|
+
// later revive re-enqueues alongside), so this in-progress claim — not the queue pop — is what
|
|
403
|
+
// dedups those copies across concurrently-polling agents. It must be set before the await.
|
|
404
|
+
this.inProgress.set(meta.id, {
|
|
405
|
+
id: meta.id,
|
|
354
406
|
startedAt: time,
|
|
355
407
|
lastUpdatedAt: time
|
|
356
408
|
});
|
|
357
|
-
|
|
409
|
+
// The large inputs are not kept in memory; read them from the database. They were durably
|
|
410
|
+
// persisted (addProvingJob's write commits) before the job became dispatchable, so this hits.
|
|
411
|
+
const inputsUri = await this.database.getProvingJobInputs(meta.id);
|
|
412
|
+
if (!inputsUri) {
|
|
413
|
+
// The job was cleaned up (or its inputs lost) after we claimed it — release the claim and
|
|
414
|
+
// keep draining the queue for another candidate. Nothing else was mutated yet, so there is
|
|
415
|
+
// no wait metric or enqueued-at timer to unwind.
|
|
416
|
+
this.inProgress.delete(meta.id);
|
|
417
|
+
this.logger.warn(`No inputs found for proving job id=${meta.id}; skipping dispatch`, {
|
|
418
|
+
provingJobId: meta.id
|
|
419
|
+
});
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
// The dispatch is now committed: record the queue wait and clear the enqueued-at timer.
|
|
423
|
+
const enqueuedAt = this.enqueuedAt.get(meta.id);
|
|
358
424
|
if (enqueuedAt) {
|
|
359
|
-
this.instrumentation.recordJobWait(
|
|
360
|
-
|
|
361
|
-
this.enqueuedAt.delete(job.id);
|
|
425
|
+
this.instrumentation.recordJobWait(meta.type, enqueuedAt);
|
|
426
|
+
this.enqueuedAt.delete(meta.id);
|
|
362
427
|
}
|
|
428
|
+
const job = {
|
|
429
|
+
id: meta.id,
|
|
430
|
+
type: meta.type,
|
|
431
|
+
epochNumber: meta.epochNumber,
|
|
432
|
+
inputsUri
|
|
433
|
+
};
|
|
363
434
|
return {
|
|
364
435
|
job,
|
|
365
436
|
time
|
|
@@ -407,14 +478,13 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
407
478
|
this.logger.info(`Marking proving job as failed id=${id} type=${ProvingRequestType[item.type]} totalAttempts=${retries + 1} err=${err}`, {
|
|
408
479
|
provingJobId: id
|
|
409
480
|
});
|
|
410
|
-
// save the
|
|
411
|
-
//
|
|
412
|
-
|
|
481
|
+
// save the (small) rejection reason to the cache and notify clients of the job status. The reason
|
|
482
|
+
// is kept in memory, so status reads work even if the database write below fails.
|
|
483
|
+
this.resultsCache.set(id, {
|
|
413
484
|
status: 'rejected',
|
|
414
485
|
reason: String(err)
|
|
415
|
-
};
|
|
416
|
-
this.
|
|
417
|
-
this.promises.get(id).resolve(result);
|
|
486
|
+
});
|
|
487
|
+
this.promises.get(id).resolve();
|
|
418
488
|
this.completedJobNotifications.push(id);
|
|
419
489
|
this.instrumentation.incRejectedJobs(item.type);
|
|
420
490
|
if (info) {
|
|
@@ -431,19 +501,19 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
431
501
|
}
|
|
432
502
|
return this.#getProvingJob(filter);
|
|
433
503
|
}
|
|
434
|
-
#reportProvingJobProgress(id, startedAt, filter) {
|
|
504
|
+
async #reportProvingJobProgress(id, startedAt, filter) {
|
|
435
505
|
const job = this.jobsCache.get(id);
|
|
436
506
|
if (!job) {
|
|
437
507
|
this.logger.warn(`Proving job id=${id} does not exist`, {
|
|
438
508
|
provingJobId: id
|
|
439
509
|
});
|
|
440
|
-
return this.#getProvingJob(filter);
|
|
510
|
+
return await this.#getProvingJob(filter);
|
|
441
511
|
}
|
|
442
512
|
if (this.resultsCache.has(id)) {
|
|
443
513
|
this.logger.warn(`Proving job id=${id} has already been completed`, {
|
|
444
514
|
provingJobId: id
|
|
445
515
|
});
|
|
446
|
-
return this.#getProvingJob(filter);
|
|
516
|
+
return await this.#getProvingJob(filter);
|
|
447
517
|
}
|
|
448
518
|
const metadata = this.inProgress.get(id);
|
|
449
519
|
const now = this.msTimeSource();
|
|
@@ -477,7 +547,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
477
547
|
this.logger.warn(`Proving job id=${id} type=${ProvingRequestType[job.type]} already being worked on by another agent. Sending new one`, {
|
|
478
548
|
provingJobId: id
|
|
479
549
|
});
|
|
480
|
-
return this.#getProvingJob(filter);
|
|
550
|
+
return await this.#getProvingJob(filter);
|
|
481
551
|
}
|
|
482
552
|
async #reportProvingJobSuccess(id, value, filter) {
|
|
483
553
|
const info = this.inProgress.get(id);
|
|
@@ -505,15 +575,17 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
505
575
|
this.logger.info(`Proving job complete id=${id} type=${ProvingRequestType[item.type]} totalAttempts=${retries + 1}`, {
|
|
506
576
|
provingJobId: id
|
|
507
577
|
});
|
|
508
|
-
//
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
|
|
578
|
+
// Mark settled synchronously (the gate that makes concurrent settles no-op, unchanged from before),
|
|
579
|
+
// holding only the status in resultsCache. The large proof value is kept transiently in
|
|
580
|
+
// pendingResults so status reads are read-your-writes until the database write below commits.
|
|
581
|
+
this.resultsCache.set(id, {
|
|
582
|
+
status: 'fulfilled'
|
|
583
|
+
});
|
|
584
|
+
this.pendingResults.set(id, {
|
|
512
585
|
status: 'fulfilled',
|
|
513
586
|
value
|
|
514
|
-
};
|
|
515
|
-
this.
|
|
516
|
-
this.promises.get(id).resolve(result);
|
|
587
|
+
});
|
|
588
|
+
this.promises.get(id).resolve();
|
|
517
589
|
this.completedJobNotifications.push(id);
|
|
518
590
|
this.instrumentation.incResolvedJobs(item.type);
|
|
519
591
|
if (info) {
|
|
@@ -522,7 +594,11 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
522
594
|
}
|
|
523
595
|
try {
|
|
524
596
|
await this.database.setProvingJobResult(id, value);
|
|
597
|
+
// The value is durable in the database now; drop the transient in-memory copy.
|
|
598
|
+
this.pendingResults.delete(id);
|
|
525
599
|
} catch (saveErr) {
|
|
600
|
+
// Keep the value in pendingResults so status/result reads still succeed despite the failed write —
|
|
601
|
+
// this preserves the previous "works even if the database breaks" behaviour for this edge.
|
|
526
602
|
this.logger.error(`Failed to save proving job result id=${id}`, saveErr, {
|
|
527
603
|
provingJobId: id
|
|
528
604
|
});
|
|
@@ -580,12 +656,11 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
580
656
|
this.logger.error(`Proving job id=${id} timed out after ${retries + 1} attempts. Marking as failed.`, {
|
|
581
657
|
provingJobId: id
|
|
582
658
|
});
|
|
583
|
-
|
|
659
|
+
this.resultsCache.set(id, {
|
|
584
660
|
status: 'rejected',
|
|
585
661
|
reason: 'Timed out'
|
|
586
|
-
};
|
|
587
|
-
this.
|
|
588
|
-
this.promises.get(id)?.resolve(result);
|
|
662
|
+
});
|
|
663
|
+
this.promises.get(id)?.resolve();
|
|
589
664
|
this.completedJobNotifications.push(id);
|
|
590
665
|
this.instrumentation.incRejectedJobs(item.type);
|
|
591
666
|
}
|
|
@@ -5,7 +5,8 @@ export declare class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
5
5
|
private jobs;
|
|
6
6
|
private results;
|
|
7
7
|
getProvingJob(id: ProvingJobId): ProvingJob | undefined;
|
|
8
|
-
|
|
8
|
+
getProvingJobInputs(id: ProvingJobId): Promise<ProofUri | undefined>;
|
|
9
|
+
getProvingJobResult(id: ProvingJobId): Promise<ProvingJobSettledResult | undefined>;
|
|
9
10
|
addProvingJob(job: ProvingJob): Promise<void>;
|
|
10
11
|
setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void>;
|
|
11
12
|
setProvingJobError(id: ProvingJobId, reason: string): Promise<void>;
|
|
@@ -16,4 +17,4 @@ export declare class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
16
17
|
allProvingJobs(): AsyncIterableIterator<[ProvingJob, ProvingJobSettledResult | undefined]>;
|
|
17
18
|
close(): Promise<void>;
|
|
18
19
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfZGF0YWJhc2UvbWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsS0FBSyxVQUFVLEVBQ2YsS0FBSyxZQUFZLEVBQ2pCLEtBQUssdUJBQXVCLEVBRTdCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxxQkFBYSxzQkFBdUIsWUFBVyxxQkFBcUI7SUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBdUM7SUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBb0Q7SUFFbkUsYUFBYSxDQUFDLEVBQUUsRUFBRSxZQUFZLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FFdEQ7SUFFRCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLENBRW5FO0lBRUQsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxDQUFDLENBRWxGO0lBRUQsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUc1QztJQUVELG1CQUFtQixDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR3BFO0lBRUQsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHbEU7SUFFRCxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEQ7SUFFRCxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHdEQ7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU1wRDtJQUVELGtDQUFrQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU0xRTtJQUVNLGNBQWMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUloRztJQUVELEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXJCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proving_broker_database/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAE7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qBAAa,sBAAuB,YAAW,qBAAqB;IAClE,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAoD;IAEnE,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAEtD;IAED,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,uBAAuB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proving_broker_database/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAE7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qBAAa,sBAAuB,YAAW,qBAAqB;IAClE,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAoD;IAEnE,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAEtD;IAED,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAEnE;IAED,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAElF;IAED,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5C;IAED,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;IAED,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlE;IAED,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;IAED,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtD;IAED,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpD;IAED,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1E;IAEM,cAAc,IAAI,qBAAqB,CAAC,CAAC,UAAU,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC,CAIhG;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;CACF"}
|
|
@@ -5,8 +5,11 @@ export class InMemoryBrokerDatabase {
|
|
|
5
5
|
getProvingJob(id) {
|
|
6
6
|
return this.jobs.get(id);
|
|
7
7
|
}
|
|
8
|
+
getProvingJobInputs(id) {
|
|
9
|
+
return Promise.resolve(this.jobs.get(id)?.inputsUri);
|
|
10
|
+
}
|
|
8
11
|
getProvingJobResult(id) {
|
|
9
|
-
return this.results.get(id);
|
|
12
|
+
return Promise.resolve(this.results.get(id));
|
|
10
13
|
}
|
|
11
14
|
addProvingJob(job) {
|
|
12
15
|
this.jobs.set(job.id, job);
|