From 41ae16c822e4022c446da65b44d53d9c2a5b8dc1 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Fri, 17 Oct 2025 13:27:16 +0200 Subject: [PATCH] Update go sdk latest release --- docs/develop/go/agents.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/develop/go/agents.md b/docs/develop/go/agents.md index 433d2b9..a3bac77 100644 --- a/docs/develop/go/agents.md +++ b/docs/develop/go/agents.md @@ -199,13 +199,20 @@ if err != nil { } ``` -### Deterministic randoms and time +### Deterministic randoms ❌ Never use `rand.Float64()` - non-deterministic and breaks replay logic. -✅ Use `restate.Rand()` or `restate.UUID()` - Restate journals the result for deterministic replay. +✅ Use Restate's deterministically replayable random generators. -❌ Never use `time.Now()` - returns different values during replay. -✅ Use `restate.Now()` - Restate records and replays the same timestamp. +```go {"CODE_LOAD::go/develop/journalingresults.go#uuid"} +uuid := restate.Rand(ctx).UUID() +``` + +```go {"CODE_LOAD::go/develop/journalingresults.go#random_nb"} +randomInt := restate.Rand(ctx).Uint64() +randomFloat := restate.Rand(ctx).Float64() +randomSource := rand.New(restate.Rand(ctx).Source()) +``` ### Durable Timers and Sleep ❌ Never use `time.Sleep()` or timers - not durable, lost on restarts.