Skip to content

Implement valkey backend#460

Open
DerkSchooltink wants to merge 24 commits into
cschleiden:mainfrom
DerkSchooltink:feature/implement-valkey-backend
Open

Implement valkey backend#460
DerkSchooltink wants to merge 24 commits into
cschleiden:mainfrom
DerkSchooltink:feature/implement-valkey-backend

Conversation

@DerkSchooltink
Copy link
Copy Markdown
Contributor

implements #363

@DerkSchooltink DerkSchooltink force-pushed the feature/implement-valkey-backend branch 2 times, most recently from f20d64a to 96a6b63 Compare November 17, 2025 16:02
@DerkSchooltink
Copy link
Copy Markdown
Contributor Author

Before I undraft this, I will attempt to run this in a private project to see if I missed anything.

The queue tests should cover the majority and they seem to work fine, but there are some key differences inside Dequeue and Size that I'm not entirely sure of.

@DerkSchooltink DerkSchooltink force-pushed the feature/implement-valkey-backend branch 3 times, most recently from 38ef7ff to 3a48b8e Compare November 19, 2025 10:54
@DerkSchooltink DerkSchooltink force-pushed the feature/implement-valkey-backend branch from e63ccd8 to 4fafa8c Compare November 25, 2025 14:40
@DerkSchooltink
Copy link
Copy Markdown
Contributor Author

re-authored all commits to stop using my other git account :)

@DerkSchooltink DerkSchooltink force-pushed the feature/implement-valkey-backend branch from c7c2148 to f85e196 Compare November 25, 2025 15:09
@DerkSchooltink DerkSchooltink marked this pull request as ready for review November 26, 2025 14:39
@DerkSchooltink
Copy link
Copy Markdown
Contributor Author

To sum up, this is basically a carbon copy of the Redis backend implementation. I've actually tested the Redis backend with a Valkey server, and it actually works as far as I can see. But obviously, guaranteeing that compatibility might not hold forever. Hence, a valkey-go SDK implementation to go alongside the Redis variant.

@DerkSchooltink
Copy link
Copy Markdown
Contributor Author

@cschleiden could I get your eyes on this please? :)

Derk Schooltink and others added 2 commits December 18, 2025 09:50
Blockers:
- Fix CI readiness probe password (ValkeyPassw0rd, not RedisPassw0rd)
- Fix GetWorkflowInstanceHistory inclusive range bound (use exclusive ( prefix)
- Fix GetWorkflowInstances pagination treating score 0 as not-found
- Add Test_ValkeyBackend and Test_EndToEndValkeyBackend conformance tests

Suggestions:
- Fix readActiveInstanceExecution to return nil,nil on valkey.Nil (not raw error)
- Fix InstanceAlreadyExists detection to use strings.Contains (robust to error wrapping)
- Move Lua script handles from package globals into valkeyBackend and taskQueue
  structs, eliminating the data race under concurrent construction
- Add *slog.Logger to taskQueue; log recovered abandoned tasks at Info level
- Add expire_test.go porting all three auto-expiration tests from redis backend
- Update schedule_future_events.lua comment: Redis Cluster -> Valkey Cluster
- Rename redisOptions to valkeyOptions in diagnostics_test.go
- Add backend/valkey/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant