diff --git a/packages/api/src/metrics/OpenTelemetryServer.ts b/packages/api/src/metrics/OpenTelemetryServer.ts index 23719d367..62c8beb04 100644 --- a/packages/api/src/metrics/OpenTelemetryServer.ts +++ b/packages/api/src/metrics/OpenTelemetryServer.ts @@ -32,17 +32,14 @@ export type OpenTelemetryServerConfig = { }; @sequencerModule() -export class OpenTelemetryServer - extends SequencerModule - implements DependencyFactory -{ +export class OpenTelemetryServer extends SequencerModule { public constructor( @inject("Sequencer") private readonly sequencer: Sequencer ) { super(); } - public dependencies() { + public static dependencies() { return { Tracer: { useClass: OpenTelemetryTracer, @@ -99,3 +96,5 @@ export class OpenTelemetryServer log.info("OpenTelemetryServer started"); } } + +OpenTelemetryServer satisfies DependencyFactory; diff --git a/packages/api/src/metrics/OpenTelemetryTracer.ts b/packages/api/src/metrics/OpenTelemetryTracer.ts index 215ecab56..26db76766 100644 --- a/packages/api/src/metrics/OpenTelemetryTracer.ts +++ b/packages/api/src/metrics/OpenTelemetryTracer.ts @@ -11,7 +11,8 @@ export class OpenTelemetryTracer implements Tracer { // We need to import this here, so that the OpenTelemetryServer will be resolved // before this module, and therefore will be already started when this module is // eventually consumed and used - @inject("OpenTelemetryServer") openTelemetryServer: OpenTelemetryServer + @inject("OpenTelemetryServer") + private readonly openTelemetryServer: OpenTelemetryServer ) { noop(); } @@ -24,6 +25,9 @@ export class OpenTelemetryTracer implements Tracer { f: () => Promise, metadata?: Record ) { + if (this.openTelemetryServer.config.tracing?.enabled !== true) { + return await f(); + } if (this.tracer === undefined) { this.tracer = opentelemetry.trace.getTracer("protokit", "canary"); } diff --git a/packages/library/src/runtime/Withdrawals.ts b/packages/library/src/runtime/Withdrawals.ts index 417d3d0de..fd7dfb962 100644 --- a/packages/library/src/runtime/Withdrawals.ts +++ b/packages/library/src/runtime/Withdrawals.ts @@ -1,4 +1,5 @@ import { + outgoingMessage, OutgoingMessages, runtimeModule, RuntimeModule, @@ -28,6 +29,7 @@ export class Withdrawal extends Struct({ @runtimeModule() export class Withdrawals extends RuntimeModule { + @outgoingMessage() messages = new OutgoingMessages({ withdrawal: Withdrawal, }); diff --git a/packages/module/src/factories/MethodIdFactory.ts b/packages/module/src/factories/MethodIdFactory.ts index fe6be798c..3f168721b 100644 --- a/packages/module/src/factories/MethodIdFactory.ts +++ b/packages/module/src/factories/MethodIdFactory.ts @@ -1,4 +1,4 @@ -import { DependencyRecord } from "@proto-kit/common"; +import { DependencyFactory, DependencyRecord } from "@proto-kit/common"; import { MethodIdResolver } from "../runtime/MethodIdResolver"; @@ -11,3 +11,5 @@ export class MethodIdFactory { } satisfies DependencyRecord; } } + +MethodIdFactory satisfies DependencyFactory; diff --git a/packages/sequencer/src/appChain/AreProofsEnabledFactory.ts b/packages/sequencer/src/appChain/AreProofsEnabledFactory.ts index 9492875a1..153f40746 100644 --- a/packages/sequencer/src/appChain/AreProofsEnabledFactory.ts +++ b/packages/sequencer/src/appChain/AreProofsEnabledFactory.ts @@ -1,5 +1,9 @@ import { injectable } from "tsyringe"; -import { AreProofsEnabled, DependencyRecord } from "@proto-kit/common"; +import { + AreProofsEnabled, + DependencyFactory, + DependencyRecord, +} from "@proto-kit/common"; @injectable() export class InMemoryAreProofsEnabled implements AreProofsEnabled { @@ -23,3 +27,5 @@ export class AreProofsEnabledFactory { } satisfies DependencyRecord; } } + +AreProofsEnabledFactory satisfies DependencyFactory; diff --git a/packages/sequencer/src/appChain/SharedDependencyFactory.ts b/packages/sequencer/src/appChain/SharedDependencyFactory.ts index fee1eda6a..1f3e9a1db 100644 --- a/packages/sequencer/src/appChain/SharedDependencyFactory.ts +++ b/packages/sequencer/src/appChain/SharedDependencyFactory.ts @@ -1,4 +1,8 @@ -import { DependencyDeclaration, DependencyRecord } from "@proto-kit/common"; +import { + DependencyDeclaration, + DependencyFactory, + DependencyRecord, +} from "@proto-kit/common"; import { StateServiceProvider } from "@proto-kit/protocol"; import { MethodIdResolver } from "@proto-kit/module"; @@ -19,3 +23,5 @@ export class SharedDependencyFactory { }; } } + +SharedDependencyFactory satisfies DependencyFactory; diff --git a/packages/sequencer/src/logging/ConsoleTracingFactory.ts b/packages/sequencer/src/logging/ConsoleTracingFactory.ts index 86ad608c3..9787a7dd9 100644 --- a/packages/sequencer/src/logging/ConsoleTracingFactory.ts +++ b/packages/sequencer/src/logging/ConsoleTracingFactory.ts @@ -1,4 +1,4 @@ -import { DependencyRecord } from "@proto-kit/common"; +import { DependencyFactory, DependencyRecord } from "@proto-kit/common"; import { ConsoleTracer } from "./ConsoleTracer"; @@ -11,3 +11,5 @@ export class ConsoleTracingFactory { } satisfies DependencyRecord; } } + +ConsoleTracingFactory satisfies DependencyFactory; diff --git a/packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts b/packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts index 95891c863..1d8e56fbd 100644 --- a/packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts +++ b/packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts @@ -143,3 +143,5 @@ export class MinaBaseLayer this.network = Network; } } + +MinaBaseLayer satisfies DependencyFactory; diff --git a/packages/sequencer/src/sequencer/SequencerStartupModule.ts b/packages/sequencer/src/sequencer/SequencerStartupModule.ts index 29ffeb940..998b3e520 100644 --- a/packages/sequencer/src/sequencer/SequencerStartupModule.ts +++ b/packages/sequencer/src/sequencer/SequencerStartupModule.ts @@ -151,6 +151,15 @@ export class SequencerStartupModule log.info("Compiling Protocol circuits, this can take a few minutes"); + const timeout = setTimeout( + () => { + log.error( + "No response yet received from workers - have you configured a TaskQueue and a corresponding worker running (either in-process or somewhere else)" + ); + }, + this.areProofsEnabled.areProofsEnabled ? 20 * 60 * 1000 : 30 * 1000 + ); + const root = await this.compileRuntime(flow); const protocolBridgeArtifacts = await this.compileProtocolAndBridge( @@ -176,6 +185,8 @@ export class SequencerStartupModule }); log.info("Protocol circuits compiled successfully, commencing startup"); + + clearTimeout(timeout); } public async close() { diff --git a/packages/sequencer/src/worker/worker/FlowTaskWorker.ts b/packages/sequencer/src/worker/worker/FlowTaskWorker.ts index 48dbd9a21..137b3ddee 100644 --- a/packages/sequencer/src/worker/worker/FlowTaskWorker.ts +++ b/packages/sequencer/src/worker/worker/FlowTaskWorker.ts @@ -106,6 +106,8 @@ export class FlowTaskWorker[]> ...newWorkers, }; + log.info("All tasks prepared and ready"); + this.prepareResolve!(); }