The changes
Cache reads are unchanged and still synchronous:
get_config, get_all_configs, get_secret, get_secret_file_path, get_flag, find_flag, get_all_flags, kind, key_type, billing_overdue, synced_at. They read in-memory state and make no network call, so an .await would add noise without adding a suspension point.
Before and after
Staying synchronous
If your application has no runtime, enable theblocking feature and change one import:
.await, and it owns a small runtime on its own threads so it works from inside another runtime too.
Configuration errors moved
Validation failures used to arrive asNexusError::SyncFailed(String), so telling an unparseable endpoint from a failed sync meant matching on message text. They are now NexusError::Config(String), and the message names the option and, for lists, the index:
ttl below one second, and a 0 entry in sse_reconnect_cooldown.
Recovering the transport error
Minimum Rust version
1.88. Raising it can break consumers on older toolchains, so it is stated explicitly and verified by a CI job that builds and tests with exactly that toolchain.New in the same release
close()- stop all background work and remove materialised file-type secrets, at a point you choose.synced_at()- when the cache was last filled successfully.find_flag()-Nonefor an absent flag, so you can tell it from one that is present and false.StreamHandle::abort()- stop SSE and keep TTL polling.
