Skip to content

[Brook] Added an in-process memory Store for tests. - #23

Closed
moetemp wants to merge 1 commit into
moe/brook/v3/s6-topic-prefixesfrom
moe/brook/v3/s7-memory-store
Closed

moetemp wants to merge 1 commit into
moe/brook/v3/s6-topic-prefixesfrom
moe/brook/v3/s7-memory-store

Conversation

@moetemp

@moetemp moetemp commented Oct 21, 2026

Copy link
Copy Markdown
Owner

What changed?

This PR adds MemoryStreamExtension, the Stream runtime on an in-process memory Store, for tests. It serves the same call and call_async methods as the Redis extension, under the name temporalio-streams-memory. MemoryStreamExtension::create(retention, safety_ttl, meter) builds it, and from_config_bytes takes the plugin's RedisStreamConfig and reads only its Retention and safety TTL. The new Store trait has the calls that the service and the Workflow path use. RedisStore and MemoryStore both implement it. The memory Store keeps the meta fields of the Redis layout and runs the steps of the Lua scripts in the same order: epochs, fences, dedupe, the Superseded flag, withdrawal, closes, offsets (ms << 20 | seq from a process clock), TTLs and Retention by time.

Why?

The harness port and lang tests need Streams with no Redis (DECISIONS S29). Redis stays the only production Store.

How did you test it?

The Store suite (tests/store.rs, renamed from redis_store.rs) and the service, Workflow and writer suites run on standalone Redis, cluster Redis and the memory Store. With no Redis set, they run on the memory Store alone. A Store test checks the meta field names against the shared vectors. A deliberate break of the memory fence and withdrawal failed five Store cases, so the suite holds the memory Store.

  • Unit Tests
  • Staging
  • End to End Tests

The harness and lang tests need Streams with no Redis. A Store trait now has the calls that the service and the Workflow path use, and the memory Store runs the steps of the Lua scripts in the same order, so one test suite holds both Stores to one set of rules.
@moetemp

moetemp commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Closing as stale. This layer is folded into the v5 tip, #41, and the upstream review uses a fresh series instead. Plan: https://www.notion.so/4048fc567738814990b7c796ac28fe3f

@moetemp moetemp closed this Oct 25, 2026
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