@aztec/prover-client 5.0.0-rc.2 → 5.0.1
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/orchestrator/block-building-helpers.d.ts +1 -1
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +1 -1
- package/dest/orchestrator/tx-proving-state.d.ts +3 -3
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.d.ts +3 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +5 -0
- package/dest/proving_broker/proving_broker.d.ts +1 -1
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +60 -17
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -1
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +10 -0
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +13 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +30 -3
- package/dest/proving_broker/proving_broker_database.d.ts +15 -1
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +1 -1
- package/dest/test/mock_prover.js +2 -2
- package/package.json +15 -15
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1 -1
- package/src/orchestrator/tx-proving-state.ts +3 -3
- package/src/proving_broker/broker_prover_facade.ts +4 -2
- package/src/proving_broker/proving_broker.ts +57 -17
- package/src/proving_broker/proving_broker_database/memory.ts +10 -0
- package/src/proving_broker/proving_broker_database/persisted.ts +40 -5
- package/src/proving_broker/proving_broker_database.ts +16 -0
- package/src/test/mock_prover.ts +2 -2
|
@@ -22,7 +22,7 @@ export declare const insertSideEffects: (tx: ProcessedTx, db: MerkleTreeWriteOpe
|
|
|
22
22
|
nullifierInsertionResult: import("@aztec/stdlib/trees").BatchInsertionResult<number, number>;
|
|
23
23
|
publicDataInsertionResult: import("@aztec/stdlib/trees").SequentialInsertionResult<number>;
|
|
24
24
|
}>;
|
|
25
|
-
export declare function getChonkProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<
|
|
25
|
+
export declare function getChonkProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<1270>;
|
|
26
26
|
export declare function getPublicChonkVerifierPrivateInputsFromTx(tx: Tx | ProcessedTx, proverId: Fr): PublicChonkVerifierPrivateInputs;
|
|
27
27
|
export declare const buildBlobHints: (blobFields: Fr[]) => Promise<{
|
|
28
28
|
blobCommitments: import("@aztec/foundation/curves/bls12").BLS12Point[];
|
|
@@ -567,7 +567,7 @@ _dec = trackSpan('CheckpointSubTreeOrchestrator.startNewBlock', (blockNumber)=>(
|
|
|
567
567
|
if (!txs.length) {
|
|
568
568
|
// Empty block: setBlockCompleted handles this without addTxs being called. Bail to
|
|
569
569
|
// avoid the throw below (we cannot find the blockNumber without any txs).
|
|
570
|
-
this.logger.
|
|
570
|
+
this.logger.verbose(`Provided no txs to addTxs.`);
|
|
571
571
|
return;
|
|
572
572
|
}
|
|
573
573
|
const blockNumber = BlockNumber(txs[0].globalVariables.blockNumber);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
@@ -32,6 +32,6 @@ export declare class TxProvingState {
|
|
|
32
32
|
inputs: PrivateTxBaseRollupPrivateInputs;
|
|
33
33
|
};
|
|
34
34
|
setPublicChonkVerifierProof(publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
35
|
-
setAvmProof(avmProof: RecursiveProof<typeof
|
|
35
|
+
setAvmProof(avmProof: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>): void;
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci90eC1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVHLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWtDLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFFcEIsZ0NBQWdDLEVBRWhDLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVFwRDs7OztHQUlHO0FBQ0gscUJBQWEsY0FBYzs7YUFRUCxXQUFXLEVBQUUsV0FBVztJQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7YUFDaEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7SUFDeEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBVjNCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUcxQjtJQUNGLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBdUQ7SUFFeEUsWUFDa0IsV0FBVyxFQUFFLFdBQVcsRUFDdkIsZUFBZSxFQUFFLGVBQWUsRUFDakMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsRUFDdkQsUUFBUSxFQUFFLEVBQUUsRUFDM0I7SUFFSixJQUFJLGVBQWUsWUFFbEI7SUFFTSxLQUFLLFlBRVg7SUFFTSxZQUFZLElBQUksZ0JBQWdCLENBRXRDO0lBRU0sbUNBQW1DLG9FQUV6QztJQUVNLDBCQUEwQjs7Ozs7O01BWWhDO0lBRU0sMkJBQTJCLENBQ2hDLDZCQUE2QixFQUFFLDZCQUE2QixDQUMxRCwrQkFBK0IsRUFDL0IsT0FBTyx5Q0FBeUMsQ0FDakQsUUFHRjtJQUVNLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLE9BQU8sNkJBQTZCLENBQUMsUUFFaEY7Q0FvQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAkC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EACL,KAAK,eAAe,EAEpB,gCAAgC,EAEhC,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQpD;;;;GAIG;AACH,qBAAa,cAAc;;aAQP,WAAW,EAAE,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;aAChB,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,mBAAmB,CAAC,CAG1B;IACF,OAAO,CAAC,QAAQ,CAAC,CAAuD;IAExE,YACkB,WAAW,EAAE,WAAW,EACvB,eAAe,EAAE,eAAe,EACjC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,EACvD,QAAQ,EAAE,EAAE,EAC3B;IAEJ,IAAI,eAAe,YAElB;IAEM,KAAK,YAEX;IAEM,YAAY,IAAI,gBAAgB,CAEtC;IAEM,mCAAmC,oEAEzC;IAEM,0BAA0B;;;;;;MAYhC;IAEM,2BAA2B,CAChC,6BAA6B,EAAE,6BAA6B,CAC1D,+BAA+B,EAC/B,OAAO,yCAAyC,CACjD,QAGF;IAEM,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,QAEhF;CAoCF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
4
4
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
@@ -32,7 +32,7 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
32
32
|
private retrieveJobsThatShouldBeReady;
|
|
33
33
|
private backupFailedProofInputs;
|
|
34
34
|
private monitorForCompletedJobs;
|
|
35
|
-
getAvmProof(inputs: AvmCircuitInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<RecursiveProof<typeof
|
|
35
|
+
getAvmProof(inputs: AvmCircuitInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>>;
|
|
36
36
|
getBaseParityProof(inputs: ParityBasePrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
37
37
|
getTxMergeRollupProof(input: TxMergeRollupPrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
38
38
|
getPublicChonkVerifierProof(inputs: PublicChonkVerifierPrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,6 +218,11 @@ export class BrokerCircuitProverFacade {
|
|
|
218
218
|
success: false,
|
|
219
219
|
reason: result.reason
|
|
220
220
|
};
|
|
221
|
+
} else if (result.status === 'aborted') {
|
|
222
|
+
return {
|
|
223
|
+
success: false,
|
|
224
|
+
reason: 'Aborted'
|
|
225
|
+
};
|
|
221
226
|
} else {
|
|
222
227
|
throw new Error(`Unexpected proving job status ${result.status}`);
|
|
223
228
|
}
|
|
@@ -73,4 +73,4 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
73
73
|
* is to get picked up by agents
|
|
74
74
|
*/
|
|
75
75
|
export declare const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[];
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2Jyb2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLOUQsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssUUFBUSxFQUNiLEtBQUssVUFBVSxFQUNmLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGdCQUFnQixFQUV0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUloSCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBNkIsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVcxRTs7O0dBR0c7QUFDSCxxQkFBYSxhQUFjLFlBQVcsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsU0FBUzs7SUFpRjFHLE9BQU8sQ0FBQyxRQUFRO0lBa0JoQixPQUFPLENBQUMsTUFBTTtJQWxHaEIsT0FBTyxDQUFDLE1BQU0sQ0E2Qlo7SUFJRixPQUFPLENBQUMsU0FBUyxDQUF1QztJQUV4RCxPQUFPLENBQUMsWUFBWSxDQUFvRDtJQUd4RSxPQUFPLENBQUMsVUFBVSxDQUFrQztJQU1wRCxPQUFPLENBQUMsVUFBVSxDQUErQztJQUdqRSxPQUFPLENBQUMsT0FBTyxDQUFtQztJQUdsRCxPQUFPLENBQUMsUUFBUSxDQUEwRTtJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,15 +193,41 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
193
193
|
}
|
|
194
194
|
async #enqueueProvingJob(job) {
|
|
195
195
|
// We return the job status at the start of this call
|
|
196
|
-
|
|
196
|
+
let jobStatus = this.#getProvingJobStatus(job.id);
|
|
197
197
|
if (this.jobsCache.has(job.id)) {
|
|
198
198
|
const existing = this.jobsCache.get(job.id);
|
|
199
199
|
assert.deepStrictEqual(job, existing, 'Duplicate proving job ID');
|
|
200
|
-
this.
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
200
|
+
if (this.resultsCache.get(job.id)?.status === 'aborted') {
|
|
201
|
+
// The producer is re-requesting a job it previously cancelled: revive it rather than
|
|
202
|
+
// returning the cached abort, clearing the aborted state in memory and in the database so the
|
|
203
|
+
// revival survives a restart.
|
|
204
|
+
//
|
|
205
|
+
// Concurrency model: `jobsCache` is the enqueue lock. Every path that puts a job on the queue
|
|
206
|
+
// populates `jobsCache` *synchronously, before its first await* (see the "New proving job"
|
|
207
|
+
// block below), so a second concurrent enqueue of the same id observes the entry at the top
|
|
208
|
+
// of this method and takes a cached, no-op branch instead of enqueuing a duplicate. The revive
|
|
209
|
+
// must keep holding that lock: we tear down the settled state and re-set `jobsCache` in a
|
|
210
|
+
// single synchronous span (no await in between), and only then await the database. Because a
|
|
211
|
+
// concurrent re-request can only interleave at that await — by which point `jobsCache` is
|
|
212
|
+
// 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, which
|
|
214
|
+
// was resolved with the abort, so `enqueueJobInternal` below mints a fresh one for the retry.)
|
|
215
|
+
this.logger.info(`Reviving aborted proving job id=${job.id} epochNumber=${job.epochNumber}`, {
|
|
216
|
+
provingJobId: job.id
|
|
217
|
+
});
|
|
218
|
+
this.cleanUpProvingJobState([
|
|
219
|
+
job.id
|
|
220
|
+
]);
|
|
221
|
+
this.jobsCache.set(job.id, job);
|
|
222
|
+
await this.database.deleteProvingJobResult(job.id);
|
|
223
|
+
jobStatus = this.#getProvingJobStatus(job.id);
|
|
224
|
+
} else {
|
|
225
|
+
this.logger.warn(`Cached proving job id=${job.id} epochNumber=${job.epochNumber}. Not enqueuing again`, {
|
|
226
|
+
provingJobId: job.id
|
|
227
|
+
});
|
|
228
|
+
this.instrumentation.incCachedJobs(job.type);
|
|
229
|
+
return jobStatus;
|
|
230
|
+
}
|
|
205
231
|
}
|
|
206
232
|
if (this.isJobStale(job)) {
|
|
207
233
|
this.logger.warn(`Tried enqueueing stale proving job id=${job.id} epochNumber=${job.epochNumber}`, {
|
|
@@ -228,18 +254,39 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
228
254
|
return jobStatus;
|
|
229
255
|
}
|
|
230
256
|
async #cancelProvingJob(id) {
|
|
231
|
-
|
|
257
|
+
const job = this.jobsCache.get(id);
|
|
258
|
+
if (!job) {
|
|
232
259
|
this.logger.warn(`Can't cancel a job that doesn't exist id=${id}`, {
|
|
233
260
|
provingJobId: id
|
|
234
261
|
});
|
|
235
262
|
return;
|
|
236
263
|
}
|
|
237
|
-
//
|
|
238
|
-
if (
|
|
239
|
-
|
|
264
|
+
// Leave jobs that have already settled (completed or failed) alone: those results are terminal.
|
|
265
|
+
if (this.resultsCache.has(id)) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
this.logger.info(`Cancelling job id=${id}`, {
|
|
269
|
+
provingJobId: id
|
|
270
|
+
});
|
|
271
|
+
this.inProgress.delete(id);
|
|
272
|
+
// Record the cancellation as its own settled state and persist it, so it survives a restart and
|
|
273
|
+
// notifies the current waiter. Unlike a completion or failure this is not terminal: re-enqueuing
|
|
274
|
+
// the same job id revives it (see #enqueueProvingJob), so the abort never permanently blocks the
|
|
275
|
+
// proof.
|
|
276
|
+
const result = {
|
|
277
|
+
status: 'aborted'
|
|
278
|
+
};
|
|
279
|
+
this.resultsCache.set(id, result);
|
|
280
|
+
this.promises.get(id)?.resolve(result);
|
|
281
|
+
this.completedJobNotifications.push(id);
|
|
282
|
+
this.instrumentation.incAbortedJobs(job.type);
|
|
283
|
+
try {
|
|
284
|
+
await this.database.setProvingJobAborted(id);
|
|
285
|
+
} catch (saveErr) {
|
|
286
|
+
this.logger.error(`Failed to save proving job aborted status id=${id}`, saveErr, {
|
|
240
287
|
provingJobId: id
|
|
241
288
|
});
|
|
242
|
-
|
|
289
|
+
throw saveErr;
|
|
243
290
|
}
|
|
244
291
|
}
|
|
245
292
|
cleanUpProvingJobState(ids) {
|
|
@@ -322,7 +369,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
322
369
|
}
|
|
323
370
|
return undefined;
|
|
324
371
|
}
|
|
325
|
-
async #reportProvingJobError(id, err, retry = false, filter
|
|
372
|
+
async #reportProvingJobError(id, err, retry = false, filter) {
|
|
326
373
|
const info = this.inProgress.get(id);
|
|
327
374
|
const item = this.jobsCache.get(id);
|
|
328
375
|
const retries = this.retries.get(id) ?? 0;
|
|
@@ -369,11 +416,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
369
416
|
this.resultsCache.set(id, result);
|
|
370
417
|
this.promises.get(id).resolve(result);
|
|
371
418
|
this.completedJobNotifications.push(id);
|
|
372
|
-
|
|
373
|
-
this.instrumentation.incAbortedJobs(item.type);
|
|
374
|
-
} else {
|
|
375
|
-
this.instrumentation.incRejectedJobs(item.type);
|
|
376
|
-
}
|
|
419
|
+
this.instrumentation.incRejectedJobs(item.type);
|
|
377
420
|
if (info) {
|
|
378
421
|
const duration = this.msTimeSource() - info.startedAt;
|
|
379
422
|
this.instrumentation.recordJobDuration(item.type, duration);
|
|
@@ -9,9 +9,11 @@ export declare class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
9
9
|
addProvingJob(job: ProvingJob): Promise<void>;
|
|
10
10
|
setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void>;
|
|
11
11
|
setProvingJobError(id: ProvingJobId, reason: string): Promise<void>;
|
|
12
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void>;
|
|
13
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void>;
|
|
12
14
|
deleteProvingJobs(ids: ProvingJobId[]): Promise<void>;
|
|
13
15
|
deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void>;
|
|
14
16
|
allProvingJobs(): AsyncIterableIterator<[ProvingJob, ProvingJobSettledResult | undefined]>;
|
|
15
17
|
close(): Promise<void>;
|
|
16
18
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfZGF0YWJhc2UvbWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsS0FBSyxVQUFVLEVBQ2YsS0FBSyxZQUFZLEVBQ2pCLEtBQUssdUJBQXVCLEVBRTdCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxxQkFBYSxzQkFBdUIsWUFBVyxxQkFBcUI7SUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBdUM7SUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBb0Q7SUFFbkUsYUFBYSxDQUFDLEVBQUUsRUFBRSxZQUFZLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FFdEQ7SUFFRCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLHVCQUF1QixHQUFHLFNBQVMsQ0FFekU7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzVDO0lBRUQsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEU7SUFFRCxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdsRTtJQUVELG9CQUFvQixDQUFDLEVBQUUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdwRDtJQUVELHNCQUFzQixDQUFDLEVBQUUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUd0RDtJQUVELGlCQUFpQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBTXBEO0lBRUQsa0NBQWtDLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBTTFFO0lBRU0sY0FBYyxJQUFJLHFCQUFxQixDQUFDLENBQUMsVUFBVSxFQUFFLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBSWhHO0lBRUQsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFckI7Q0FDRiJ9
|
|
@@ -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,CAEzE;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,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"}
|
|
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,CAEzE;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"}
|
|
@@ -26,6 +26,16 @@ export class InMemoryBrokerDatabase {
|
|
|
26
26
|
});
|
|
27
27
|
return Promise.resolve();
|
|
28
28
|
}
|
|
29
|
+
setProvingJobAborted(id) {
|
|
30
|
+
this.results.set(id, {
|
|
31
|
+
status: 'aborted'
|
|
32
|
+
});
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
deleteProvingJobResult(id) {
|
|
36
|
+
this.results.delete(id);
|
|
37
|
+
return Promise.resolve();
|
|
38
|
+
}
|
|
29
39
|
deleteProvingJobs(ids) {
|
|
30
40
|
for (const id of ids){
|
|
31
41
|
this.jobs.delete(id);
|
|
@@ -4,6 +4,14 @@ import { type ProofUri, ProvingJob, type ProvingJobId, ProvingJobSettledResult }
|
|
|
4
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
5
5
|
import type { ProverBrokerConfig } from '../config.js';
|
|
6
6
|
import type { ProvingBrokerDatabase } from '../proving_broker_database.js';
|
|
7
|
+
/**
|
|
8
|
+
* An item queued for a batched write. A {@link ProvingJob} adds/updates a job; a `[id, result]`
|
|
9
|
+
* tuple sets a job's settled result; a `[id, undefined]` tuple deletes a job's result. Deletes ride
|
|
10
|
+
* the same queue as writes so they stay FIFO-ordered against them: a revive's result-delete must
|
|
11
|
+
* land after the abort that preceded it, otherwise a still-queued abort could flush later and
|
|
12
|
+
* resurrect the cancelled state on disk.
|
|
13
|
+
*/
|
|
14
|
+
type BrokerWrite = ProvingJob | [ProvingJobId, ProvingJobSettledResult | undefined];
|
|
7
15
|
export declare class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
8
16
|
private epochs;
|
|
9
17
|
private config;
|
|
@@ -12,7 +20,7 @@ export declare class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
12
20
|
private batchQueue;
|
|
13
21
|
readonly tracer: Tracer;
|
|
14
22
|
private constructor();
|
|
15
|
-
commitWrites(items: Array<
|
|
23
|
+
commitWrites(items: Array<BrokerWrite>, epochNumber: number): Promise<void>;
|
|
16
24
|
private estimateSize;
|
|
17
25
|
static new(config: ProverBrokerConfig, client?: TelemetryClient, logger?: Logger): Promise<KVBrokerDatabase>;
|
|
18
26
|
private start;
|
|
@@ -21,7 +29,10 @@ export declare class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
21
29
|
addProvingJob(job: ProvingJob): Promise<void>;
|
|
22
30
|
allProvingJobs(): AsyncIterableIterator<[ProvingJob, ProvingJobSettledResult | undefined]>;
|
|
23
31
|
setProvingJobError(id: ProvingJobId, reason: string): Promise<void>;
|
|
32
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void>;
|
|
33
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void>;
|
|
24
34
|
setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void>;
|
|
25
35
|
private getEpochDatabase;
|
|
26
36
|
}
|
|
27
|
-
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfZGF0YWJhc2UvcGVyc2lzdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJbEUsT0FBTyxFQUNMLEtBQUssUUFBUSxFQUNiLFVBQVUsRUFDVixLQUFLLFlBQVksRUFDakIsdUJBQXVCLEVBRXhCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUdMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFzRTNFOzs7Ozs7R0FNRztBQUNILEtBQUssV0FBVyxHQUFHLFVBQVUsR0FBRyxDQUFDLFlBQVksRUFBRSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUVwRixxQkFBYSxnQkFBaUIsWUFBVyxxQkFBcUI7SUFRMUQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsTUFBTTtJQUVkLE9BQU8sQ0FBQyxNQUFNO0lBVmhCLE9BQU8sQ0FBQyxPQUFPLENBQWM7SUFFN0IsT0FBTyxDQUFDLFVBQVUsQ0FBa0M7SUFFcEQsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixPQUFPLGVBc0JOO0lBR1ksWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBVXZFO1lBRWEsWUFBWTtJQVUxQixPQUFvQixHQUFHLENBQ3JCLE1BQU0sRUFBRSxrQkFBa0IsRUFDMUIsTUFBTSxHQUFFLGVBQXNDLEVBQzlDLE1BQU0sU0FBd0QsNkJBOEIvRDtJQUVELE9BQU8sQ0FBQyxLQUFLO0lBSVAsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLM0I7SUFLSyxrQ0FBa0MsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FXaEY7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVDO0lBRU0sY0FBYyxJQUFJLHFCQUFxQixDQUFDLENBQUMsVUFBVSxFQUFFLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBS2hHO0lBRUQsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbEU7SUFFRCxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEQ7SUFFRCxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdEQ7SUFFRCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVwRTtZQUVhLGdCQUFnQjtDQW9CL0IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proving_broker_database/persisted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EACL,KAAK,QAAQ,EACb,UAAU,EACV,KAAK,YAAY,EACjB,uBAAuB,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"persisted.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proving_broker_database/persisted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EACL,KAAK,QAAQ,EACb,UAAU,EACV,KAAK,YAAY,EACjB,uBAAuB,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAsE3E;;;;;;GAMG;AACH,KAAK,WAAW,GAAG,UAAU,GAAG,CAAC,YAAY,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC;AAEpF,qBAAa,gBAAiB,YAAW,qBAAqB;IAQ1D,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IAVhB,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,UAAU,CAAkC;IAEpD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,eAsBN;IAGY,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,iBAUvE;YAEa,YAAY;IAU1B,OAAoB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,eAAsC,EAC9C,MAAM,SAAwD,6BA8B/D;IAED,OAAO,CAAC,KAAK;IAIP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAKK,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhF;IAED,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5C;IAEM,cAAc,IAAI,qBAAqB,CAAC,CAAC,UAAU,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC,CAKhG;IAED,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IAED,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD;IAED,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtD;IAED,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;YAEa,gBAAgB;CAoB/B"}
|
|
@@ -393,7 +393,7 @@ class SingleEpochDatabase {
|
|
|
393
393
|
estimateSize() {
|
|
394
394
|
return this.store.estimateSize();
|
|
395
395
|
}
|
|
396
|
-
async batchWrite(jobs, results) {
|
|
396
|
+
async batchWrite(jobs, results, deletedResults = []) {
|
|
397
397
|
await this.store.transactionAsync(async ()=>{
|
|
398
398
|
for (const job of jobs){
|
|
399
399
|
await this.jobs.set(job.id, jsonStringify(job));
|
|
@@ -401,6 +401,11 @@ class SingleEpochDatabase {
|
|
|
401
401
|
for (const [id, result] of results){
|
|
402
402
|
await this.jobResults.set(id, jsonStringify(result));
|
|
403
403
|
}
|
|
404
|
+
// Deletes are applied after sets so that, if a set and a delete for the same id land in one
|
|
405
|
+
// batch (e.g. an abort immediately followed by a revive's result-delete), the delete wins.
|
|
406
|
+
for (const id of deletedResults){
|
|
407
|
+
await this.jobResults.delete(id);
|
|
408
|
+
}
|
|
404
409
|
});
|
|
405
410
|
}
|
|
406
411
|
async *allProvingJobs() {
|
|
@@ -421,6 +426,12 @@ class SingleEpochDatabase {
|
|
|
421
426
|
};
|
|
422
427
|
await this.jobResults.set(id, jsonStringify(result));
|
|
423
428
|
}
|
|
429
|
+
async setProvingJobAborted(id) {
|
|
430
|
+
const result = {
|
|
431
|
+
status: 'aborted'
|
|
432
|
+
};
|
|
433
|
+
await this.jobResults.set(id, jsonStringify(result));
|
|
434
|
+
}
|
|
424
435
|
async setProvingJobResult(id, value) {
|
|
425
436
|
const result = {
|
|
426
437
|
status: 'fulfilled',
|
|
@@ -468,9 +479,11 @@ export class KVBrokerDatabase {
|
|
|
468
479
|
// exposed for testing
|
|
469
480
|
async commitWrites(items, epochNumber) {
|
|
470
481
|
const jobsToAdd = items.filter((item)=>'id' in item);
|
|
471
|
-
const
|
|
482
|
+
const resultOps = items.filter((item)=>Array.isArray(item));
|
|
483
|
+
const resultsToSet = resultOps.filter((op)=>op[1] !== undefined);
|
|
484
|
+
const resultsToDelete = resultOps.filter((op)=>op[1] === undefined).map(([id])=>id);
|
|
472
485
|
const db = await this.getEpochDatabase(EpochNumber(epochNumber));
|
|
473
|
-
await db.batchWrite(jobsToAdd,
|
|
486
|
+
await db.batchWrite(jobsToAdd, resultsToSet, resultsToDelete);
|
|
474
487
|
}
|
|
475
488
|
async estimateSize() {
|
|
476
489
|
const sizes = await Promise.all(Array.from(this.epochs.values()).map((x)=>x.estimateSize()));
|
|
@@ -546,6 +559,20 @@ export class KVBrokerDatabase {
|
|
|
546
559
|
}
|
|
547
560
|
], getEpochFromProvingJobId(id));
|
|
548
561
|
}
|
|
562
|
+
setProvingJobAborted(id) {
|
|
563
|
+
return this.batchQueue.put([
|
|
564
|
+
id,
|
|
565
|
+
{
|
|
566
|
+
status: 'aborted'
|
|
567
|
+
}
|
|
568
|
+
], getEpochFromProvingJobId(id));
|
|
569
|
+
}
|
|
570
|
+
deleteProvingJobResult(id) {
|
|
571
|
+
return this.batchQueue.put([
|
|
572
|
+
id,
|
|
573
|
+
undefined
|
|
574
|
+
], getEpochFromProvingJobId(id));
|
|
575
|
+
}
|
|
549
576
|
setProvingJobResult(id, value) {
|
|
550
577
|
return this.batchQueue.put([
|
|
551
578
|
id,
|
|
@@ -32,9 +32,23 @@ export interface ProvingBrokerDatabase {
|
|
|
32
32
|
* @param err - The error that occurred while processing the proof request
|
|
33
33
|
*/
|
|
34
34
|
setProvingJobError(id: ProvingJobId, err: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Records that a proof request was cancelled. Unlike a result or error this is not terminal:
|
|
37
|
+
* re-enqueuing the same job id revives it, so the aborted state can survive a restart without
|
|
38
|
+
* permanently blocking the proof.
|
|
39
|
+
* @param id - The ID of the cancelled proof request
|
|
40
|
+
*/
|
|
41
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Clears any stored result for a proof request, returning it to the pending state while keeping
|
|
44
|
+
* the job itself. Used when reviving an aborted job so the revival is persisted and a restart
|
|
45
|
+
* cannot resurrect the stale aborted state.
|
|
46
|
+
* @param id - The ID of the proof request whose result should be cleared
|
|
47
|
+
*/
|
|
48
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void>;
|
|
35
49
|
/**
|
|
36
50
|
* Closes the database
|
|
37
51
|
*/
|
|
38
52
|
close(): Promise<void>;
|
|
39
53
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXJfZGF0YWJhc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2Jyb2tlcl9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuSDs7R0FFRztBQUNILE1BQU0sV0FBVyxxQkFBcUI7SUFDcEM7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlDOzs7T0FHRztJQUNILGtDQUFrQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVFOztPQUVHO0lBQ0gsY0FBYyxJQUFJLHFCQUFxQixDQUFDLENBQUMsVUFBVSxFQUFFLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFM0Y7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRFOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqRTs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFDLEVBQUUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXREOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsRUFBRSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFeEQ7O09BRUc7SUFDSCxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3hCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker_database.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEnH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;OAEG;IACH,cAAc,IAAI,qBAAqB,CAAC,CAAC,UAAU,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC,CAAC;IAE3F;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"proving_broker_database.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEnH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;OAEG;IACH,cAAc,IAAI,qBAAqB,CAAC,CAAC,UAAU,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC,CAAC;IAE3F;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
|
@@ -19,7 +19,7 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
19
19
|
}
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
|
-
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<
|
|
22
|
+
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<15516>>;
|
|
23
23
|
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
|
|
24
24
|
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
|
|
25
25
|
getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
package/dest/test/mock_prover.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { times } from '@aztec/foundation/collection';
|
|
3
3
|
import { makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
@@ -44,7 +44,7 @@ export class TestBroker {
|
|
|
44
44
|
export class MockProver {
|
|
45
45
|
constructor(){}
|
|
46
46
|
getAvmProof(_inputs, _signal, _epochNumber) {
|
|
47
|
-
return Promise.resolve(makeEmptyRecursiveProof(
|
|
47
|
+
return Promise.resolve(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS));
|
|
48
48
|
}
|
|
49
49
|
getBaseParityProof(_inputs, _signal, _epochNumber) {
|
|
50
50
|
return Promise.resolve(makePublicInputsAndRecursiveProof(makeParityPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -69,19 +69,19 @@
|
|
|
69
69
|
]
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@aztec/bb-prover": "5.0.
|
|
73
|
-
"@aztec/blob-lib": "5.0.
|
|
74
|
-
"@aztec/constants": "5.0.
|
|
75
|
-
"@aztec/ethereum": "5.0.
|
|
76
|
-
"@aztec/foundation": "5.0.
|
|
77
|
-
"@aztec/kv-store": "5.0.
|
|
78
|
-
"@aztec/noir-protocol-circuits-types": "5.0.
|
|
79
|
-
"@aztec/noir-types": "5.0.
|
|
80
|
-
"@aztec/protocol-contracts": "5.0.
|
|
81
|
-
"@aztec/simulator": "5.0.
|
|
82
|
-
"@aztec/stdlib": "5.0.
|
|
83
|
-
"@aztec/telemetry-client": "5.0.
|
|
84
|
-
"@aztec/world-state": "5.0.
|
|
72
|
+
"@aztec/bb-prover": "5.0.1",
|
|
73
|
+
"@aztec/blob-lib": "5.0.1",
|
|
74
|
+
"@aztec/constants": "5.0.1",
|
|
75
|
+
"@aztec/ethereum": "5.0.1",
|
|
76
|
+
"@aztec/foundation": "5.0.1",
|
|
77
|
+
"@aztec/kv-store": "5.0.1",
|
|
78
|
+
"@aztec/noir-protocol-circuits-types": "5.0.1",
|
|
79
|
+
"@aztec/noir-types": "5.0.1",
|
|
80
|
+
"@aztec/protocol-contracts": "5.0.1",
|
|
81
|
+
"@aztec/simulator": "5.0.1",
|
|
82
|
+
"@aztec/stdlib": "5.0.1",
|
|
83
|
+
"@aztec/telemetry-client": "5.0.1",
|
|
84
|
+
"@aztec/world-state": "5.0.1",
|
|
85
85
|
"@iarna/toml": "^2.2.5",
|
|
86
86
|
"commander": "^12.1.0",
|
|
87
87
|
"lodash.chunk": "^4.2.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"zod": "^4"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@aztec/noir-contracts.js": "5.0.
|
|
93
|
+
"@aztec/noir-contracts.js": "5.0.1",
|
|
94
94
|
"@jest/globals": "^30.0.0",
|
|
95
95
|
"@types/jest": "^30.0.0",
|
|
96
96
|
"@types/node": "^22.15.17",
|
|
@@ -323,7 +323,7 @@ export class CheckpointSubTreeOrchestrator extends ProvingScheduler {
|
|
|
323
323
|
if (!txs.length) {
|
|
324
324
|
// Empty block: setBlockCompleted handles this without addTxs being called. Bail to
|
|
325
325
|
// avoid the throw below (we cannot find the blockNumber without any txs).
|
|
326
|
-
this.logger.
|
|
326
|
+
this.logger.verbose(`Provided no txs to addTxs.`);
|
|
327
327
|
return;
|
|
328
328
|
}
|
|
329
329
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { getVkData } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
4
4
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
@@ -32,7 +32,7 @@ export class TxProvingState {
|
|
|
32
32
|
PublicChonkVerifierPublicInputs,
|
|
33
33
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
34
34
|
>;
|
|
35
|
-
private avmProof?: RecursiveProof<typeof
|
|
35
|
+
private avmProof?: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>;
|
|
36
36
|
|
|
37
37
|
constructor(
|
|
38
38
|
public readonly processedTx: ProcessedTx,
|
|
@@ -80,7 +80,7 @@ export class TxProvingState {
|
|
|
80
80
|
this.publicChonkVerifier = publicChonkVerifierProofAndVk;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
public setAvmProof(avmProof: RecursiveProof<typeof
|
|
83
|
+
public setAvmProof(avmProof: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>) {
|
|
84
84
|
this.avmProof = avmProof;
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
@@ -288,6 +288,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
288
288
|
}
|
|
289
289
|
} else if (result.status === 'rejected') {
|
|
290
290
|
return { success: false, reason: result.reason };
|
|
291
|
+
} else if (result.status === 'aborted') {
|
|
292
|
+
return { success: false, reason: 'Aborted' };
|
|
291
293
|
} else {
|
|
292
294
|
throw new Error(`Unexpected proving job status ${result.status}`);
|
|
293
295
|
}
|
|
@@ -394,7 +396,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
394
396
|
inputs: AvmCircuitInputs,
|
|
395
397
|
signal?: AbortSignal,
|
|
396
398
|
epochNumber?: EpochNumber,
|
|
397
|
-
): Promise<RecursiveProof<typeof
|
|
399
|
+
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>> {
|
|
398
400
|
return this.enqueueJob(
|
|
399
401
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
400
402
|
ProvingRequestType.PUBLIC_VM,
|
|
@@ -272,15 +272,40 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Pr
|
|
|
272
272
|
|
|
273
273
|
async #enqueueProvingJob(job: ProvingJob): Promise<ProvingJobStatus> {
|
|
274
274
|
// We return the job status at the start of this call
|
|
275
|
-
|
|
275
|
+
let jobStatus = this.#getProvingJobStatus(job.id);
|
|
276
276
|
if (this.jobsCache.has(job.id)) {
|
|
277
277
|
const existing = this.jobsCache.get(job.id);
|
|
278
278
|
assert.deepStrictEqual(job, existing, 'Duplicate proving job ID');
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
279
|
+
|
|
280
|
+
if (this.resultsCache.get(job.id)?.status === 'aborted') {
|
|
281
|
+
// The producer is re-requesting a job it previously cancelled: revive it rather than
|
|
282
|
+
// returning the cached abort, clearing the aborted state in memory and in the database so the
|
|
283
|
+
// revival survives a restart.
|
|
284
|
+
//
|
|
285
|
+
// Concurrency model: `jobsCache` is the enqueue lock. Every path that puts a job on the queue
|
|
286
|
+
// populates `jobsCache` *synchronously, before its first await* (see the "New proving job"
|
|
287
|
+
// block below), so a second concurrent enqueue of the same id observes the entry at the top
|
|
288
|
+
// of this method and takes a cached, no-op branch instead of enqueuing a duplicate. The revive
|
|
289
|
+
// must keep holding that lock: we tear down the settled state and re-set `jobsCache` in a
|
|
290
|
+
// single synchronous span (no await in between), and only then await the database. Because a
|
|
291
|
+
// concurrent re-request can only interleave at that await — by which point `jobsCache` is
|
|
292
|
+
// populated again and the aborted result is gone — it falls into the cached branch and no-ops,
|
|
293
|
+
// so the job is enqueued exactly once. (`cleanUpProvingJobState` also drops the promise, which
|
|
294
|
+
// was resolved with the abort, so `enqueueJobInternal` below mints a fresh one for the retry.)
|
|
295
|
+
this.logger.info(`Reviving aborted proving job id=${job.id} epochNumber=${job.epochNumber}`, {
|
|
296
|
+
provingJobId: job.id,
|
|
297
|
+
});
|
|
298
|
+
this.cleanUpProvingJobState([job.id]);
|
|
299
|
+
this.jobsCache.set(job.id, job);
|
|
300
|
+
await this.database.deleteProvingJobResult(job.id);
|
|
301
|
+
jobStatus = this.#getProvingJobStatus(job.id);
|
|
302
|
+
} else {
|
|
303
|
+
this.logger.warn(`Cached proving job id=${job.id} epochNumber=${job.epochNumber}. Not enqueuing again`, {
|
|
304
|
+
provingJobId: job.id,
|
|
305
|
+
});
|
|
306
|
+
this.instrumentation.incCachedJobs(job.type);
|
|
307
|
+
return jobStatus;
|
|
308
|
+
}
|
|
284
309
|
}
|
|
285
310
|
|
|
286
311
|
if (this.isJobStale(job)) {
|
|
@@ -306,15 +331,35 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Pr
|
|
|
306
331
|
}
|
|
307
332
|
|
|
308
333
|
async #cancelProvingJob(id: ProvingJobId): Promise<void> {
|
|
309
|
-
|
|
334
|
+
const job = this.jobsCache.get(id);
|
|
335
|
+
if (!job) {
|
|
310
336
|
this.logger.warn(`Can't cancel a job that doesn't exist id=${id}`, { provingJobId: id });
|
|
311
337
|
return;
|
|
312
338
|
}
|
|
313
339
|
|
|
314
|
-
//
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
|
|
340
|
+
// Leave jobs that have already settled (completed or failed) alone: those results are terminal.
|
|
341
|
+
if (this.resultsCache.has(id)) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
this.logger.info(`Cancelling job id=${id}`, { provingJobId: id });
|
|
346
|
+
this.inProgress.delete(id);
|
|
347
|
+
|
|
348
|
+
// Record the cancellation as its own settled state and persist it, so it survives a restart and
|
|
349
|
+
// notifies the current waiter. Unlike a completion or failure this is not terminal: re-enqueuing
|
|
350
|
+
// the same job id revives it (see #enqueueProvingJob), so the abort never permanently blocks the
|
|
351
|
+
// proof.
|
|
352
|
+
const result: ProvingJobSettledResult = { status: 'aborted' };
|
|
353
|
+
this.resultsCache.set(id, result);
|
|
354
|
+
this.promises.get(id)?.resolve(result);
|
|
355
|
+
this.completedJobNotifications.push(id);
|
|
356
|
+
this.instrumentation.incAbortedJobs(job.type);
|
|
357
|
+
|
|
358
|
+
try {
|
|
359
|
+
await this.database.setProvingJobAborted(id);
|
|
360
|
+
} catch (saveErr) {
|
|
361
|
+
this.logger.error(`Failed to save proving job aborted status id=${id}`, saveErr, { provingJobId: id });
|
|
362
|
+
throw saveErr;
|
|
318
363
|
}
|
|
319
364
|
}
|
|
320
365
|
|
|
@@ -401,7 +446,6 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Pr
|
|
|
401
446
|
err: string,
|
|
402
447
|
retry = false,
|
|
403
448
|
filter?: ProvingJobFilter,
|
|
404
|
-
aborted = false,
|
|
405
449
|
): Promise<GetProvingJobResponse | undefined> {
|
|
406
450
|
const info = this.inProgress.get(id);
|
|
407
451
|
const item = this.jobsCache.get(id);
|
|
@@ -462,11 +506,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Pr
|
|
|
462
506
|
this.promises.get(id)!.resolve(result);
|
|
463
507
|
this.completedJobNotifications.push(id);
|
|
464
508
|
|
|
465
|
-
|
|
466
|
-
this.instrumentation.incAbortedJobs(item.type);
|
|
467
|
-
} else {
|
|
468
|
-
this.instrumentation.incRejectedJobs(item.type);
|
|
469
|
-
}
|
|
509
|
+
this.instrumentation.incRejectedJobs(item.type);
|
|
470
510
|
if (info) {
|
|
471
511
|
const duration = this.msTimeSource() - info.startedAt;
|
|
472
512
|
this.instrumentation.recordJobDuration(item.type, duration);
|
|
@@ -36,6 +36,16 @@ export class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
36
36
|
return Promise.resolve();
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void> {
|
|
40
|
+
this.results.set(id, { status: 'aborted' });
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void> {
|
|
45
|
+
this.results.delete(id);
|
|
46
|
+
return Promise.resolve();
|
|
47
|
+
}
|
|
48
|
+
|
|
39
49
|
deleteProvingJobs(ids: ProvingJobId[]): Promise<void> {
|
|
40
50
|
for (const id of ids) {
|
|
41
51
|
this.jobs.delete(id);
|
|
@@ -41,7 +41,11 @@ class SingleEpochDatabase {
|
|
|
41
41
|
return this.store.estimateSize();
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
async batchWrite(
|
|
44
|
+
async batchWrite(
|
|
45
|
+
jobs: ProvingJob[],
|
|
46
|
+
results: Array<[ProvingJobId, ProvingJobSettledResult]>,
|
|
47
|
+
deletedResults: ProvingJobId[] = [],
|
|
48
|
+
) {
|
|
45
49
|
await this.store.transactionAsync(async () => {
|
|
46
50
|
for (const job of jobs) {
|
|
47
51
|
await this.jobs.set(job.id, jsonStringify(job));
|
|
@@ -49,6 +53,11 @@ class SingleEpochDatabase {
|
|
|
49
53
|
for (const [id, result] of results) {
|
|
50
54
|
await this.jobResults.set(id, jsonStringify(result));
|
|
51
55
|
}
|
|
56
|
+
// Deletes are applied after sets so that, if a set and a delete for the same id land in one
|
|
57
|
+
// batch (e.g. an abort immediately followed by a revive's result-delete), the delete wins.
|
|
58
|
+
for (const id of deletedResults) {
|
|
59
|
+
await this.jobResults.delete(id);
|
|
60
|
+
}
|
|
52
61
|
});
|
|
53
62
|
}
|
|
54
63
|
|
|
@@ -66,6 +75,11 @@ class SingleEpochDatabase {
|
|
|
66
75
|
await this.jobResults.set(id, jsonStringify(result));
|
|
67
76
|
}
|
|
68
77
|
|
|
78
|
+
async setProvingJobAborted(id: ProvingJobId): Promise<void> {
|
|
79
|
+
const result: ProvingJobSettledResult = { status: 'aborted' };
|
|
80
|
+
await this.jobResults.set(id, jsonStringify(result));
|
|
81
|
+
}
|
|
82
|
+
|
|
69
83
|
async setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void> {
|
|
70
84
|
const result: ProvingJobSettledResult = { status: 'fulfilled', value };
|
|
71
85
|
await this.jobResults.set(id, jsonStringify(result));
|
|
@@ -80,10 +94,19 @@ class SingleEpochDatabase {
|
|
|
80
94
|
}
|
|
81
95
|
}
|
|
82
96
|
|
|
97
|
+
/**
|
|
98
|
+
* An item queued for a batched write. A {@link ProvingJob} adds/updates a job; a `[id, result]`
|
|
99
|
+
* tuple sets a job's settled result; a `[id, undefined]` tuple deletes a job's result. Deletes ride
|
|
100
|
+
* the same queue as writes so they stay FIFO-ordered against them: a revive's result-delete must
|
|
101
|
+
* land after the abort that preceded it, otherwise a still-queued abort could flush later and
|
|
102
|
+
* resurrect the cancelled state on disk.
|
|
103
|
+
*/
|
|
104
|
+
type BrokerWrite = ProvingJob | [ProvingJobId, ProvingJobSettledResult | undefined];
|
|
105
|
+
|
|
83
106
|
export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
84
107
|
private metrics: LmdbMetrics;
|
|
85
108
|
|
|
86
|
-
private batchQueue: BatchQueue<
|
|
109
|
+
private batchQueue: BatchQueue<BrokerWrite, number>;
|
|
87
110
|
|
|
88
111
|
public readonly tracer: Tracer;
|
|
89
112
|
|
|
@@ -112,12 +135,16 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
112
135
|
}
|
|
113
136
|
|
|
114
137
|
// exposed for testing
|
|
115
|
-
public async commitWrites(items: Array<
|
|
138
|
+
public async commitWrites(items: Array<BrokerWrite>, epochNumber: number) {
|
|
116
139
|
const jobsToAdd = items.filter((item): item is ProvingJob => 'id' in item);
|
|
117
|
-
const
|
|
140
|
+
const resultOps = items.filter((item): item is [ProvingJobId, ProvingJobSettledResult | undefined] =>
|
|
141
|
+
Array.isArray(item),
|
|
142
|
+
);
|
|
143
|
+
const resultsToSet = resultOps.filter((op): op is [ProvingJobId, ProvingJobSettledResult] => op[1] !== undefined);
|
|
144
|
+
const resultsToDelete = resultOps.filter(op => op[1] === undefined).map(([id]) => id);
|
|
118
145
|
|
|
119
146
|
const db = await this.getEpochDatabase(EpochNumber(epochNumber));
|
|
120
|
-
await db.batchWrite(jobsToAdd,
|
|
147
|
+
await db.batchWrite(jobsToAdd, resultsToSet, resultsToDelete);
|
|
121
148
|
}
|
|
122
149
|
|
|
123
150
|
private async estimateSize() {
|
|
@@ -207,6 +234,14 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
207
234
|
return this.batchQueue.put([id, { status: 'rejected', reason }], getEpochFromProvingJobId(id));
|
|
208
235
|
}
|
|
209
236
|
|
|
237
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void> {
|
|
238
|
+
return this.batchQueue.put([id, { status: 'aborted' }], getEpochFromProvingJobId(id));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void> {
|
|
242
|
+
return this.batchQueue.put([id, undefined], getEpochFromProvingJobId(id));
|
|
243
|
+
}
|
|
244
|
+
|
|
210
245
|
setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void> {
|
|
211
246
|
return this.batchQueue.put([id, { status: 'fulfilled', value }], getEpochFromProvingJobId(id));
|
|
212
247
|
}
|
|
@@ -38,6 +38,22 @@ export interface ProvingBrokerDatabase {
|
|
|
38
38
|
*/
|
|
39
39
|
setProvingJobError(id: ProvingJobId, err: string): Promise<void>;
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Records that a proof request was cancelled. Unlike a result or error this is not terminal:
|
|
43
|
+
* re-enqueuing the same job id revives it, so the aborted state can survive a restart without
|
|
44
|
+
* permanently blocking the proof.
|
|
45
|
+
* @param id - The ID of the cancelled proof request
|
|
46
|
+
*/
|
|
47
|
+
setProvingJobAborted(id: ProvingJobId): Promise<void>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Clears any stored result for a proof request, returning it to the pending state while keeping
|
|
51
|
+
* the job itself. Used when reviving an aborted job so the revival is persisted and a restart
|
|
52
|
+
* cannot resurrect the stale aborted state.
|
|
53
|
+
* @param id - The ID of the proof request whose result should be cleared
|
|
54
|
+
*/
|
|
55
|
+
deleteProvingJobResult(id: ProvingJobId): Promise<void>;
|
|
56
|
+
|
|
41
57
|
/**
|
|
42
58
|
* Closes the database
|
|
43
59
|
*/
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
@@ -104,7 +104,7 @@ export class MockProver implements ServerCircuitProver {
|
|
|
104
104
|
constructor() {}
|
|
105
105
|
|
|
106
106
|
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number) {
|
|
107
|
-
return Promise.resolve(makeEmptyRecursiveProof(
|
|
107
|
+
return Promise.resolve(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number) {
|