Skip to content

v0.5.0

Latest

Choose a tag to compare

@ghostdogpr ghostdogpr released this 25 Oct 09:06
· 1 commit to main since this release
bb86410

Release Notes

This release adds a direct client for plain blocking code and fixes several connection, subscription, and failover bugs.

  • Direct client. sage-client-direct serves plain blocking code and has no effect library dependency. Each command blocks the calling thread and returns its result, failures are thrown, and interrupting the thread cancels the wait. It is designed for virtual threads and works well with Eezo, which serves each request on its own virtual thread. Streaming helpers return an Iterator, subscriptions return a blocking iterator that you close to unsubscribe, and onMessage, onPatternMessage, and onShardMessage deliver messages to a callback. Lock bodies run on the calling thread, so they see its thread-local values. See Getting started.

  • Bug fixes. Closing a client from an interrupted thread now releases its connections, and an interrupted connect or TLS handshake cleans up its socket. Subscriptions match their server replies correctly, including Valkey error replies and pub/sub-only ACL users, and they move off cluster nodes that are migrated, removed, or demoted. Retried commands keep their master-only routing.

  • Behavior changes. A subscription that the server refuses, for example with NOPERM, fails with the server's error. cached() rejects blocking commands with NotCacheable. A master-replica connection reports TimedOut when every ROLE probe times out.

  • Binary compatibility checks. Every published module is now checked with MiMa against the previous release.

What's Changed