From ee77ce0f343ec5df0c1727c3c6a980b3063b06d2 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Tue, 5 May 2026 18:27:30 +0200 Subject: [PATCH] Create the Random instance only once --- .../src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt | 5 ++++- sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt b/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt index 529d7bd9..e1b5a0ea 100644 --- a/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt +++ b/sdk-api-kotlin/src/main/kotlin/dev/restate/sdk/kotlin/ContextImpl.kt @@ -34,6 +34,9 @@ internal constructor( internal val contextSerdeFactory: SerdeFactory, ) : WorkflowContext { + internal val random: RestateRandom = + RestateRandom(handlerContext.request().invocationId().toRandomSeed()) + override fun key(): String { return this.handlerContext.objectKey() } @@ -191,7 +194,7 @@ internal constructor( } override fun random(): RestateRandom { - return RestateRandom(handlerContext.request().invocationId().toRandomSeed()) + return this.random } override fun promise(key: DurablePromiseKey): DurablePromise { diff --git a/sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java b/sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java index 408795fa..266f5048 100644 --- a/sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java +++ b/sdk-api/src/main/java/dev/restate/sdk/ContextImpl.java @@ -36,11 +36,13 @@ class ContextImpl implements ObjectContext, WorkflowContext { private final HandlerContext handlerContext; private final Executor serviceExecutor; private final SerdeFactory serdeFactory; + private final RestateRandom random; ContextImpl(HandlerContext handlerContext, Executor serviceExecutor, SerdeFactory serdeFactory) { this.handlerContext = handlerContext; this.serviceExecutor = serviceExecutor; this.serdeFactory = serdeFactory; + this.random = new RestateRandom(this.request().invocationId().toRandomSeed()); } static void checkNotInsideRun() { @@ -275,7 +277,7 @@ public void reject(String reason) { @Override public RestateRandom random() { - return new RestateRandom(this.request().invocationId().toRandomSeed()); + return this.random; } @Override