v0.1.1 #78
GianIac
started this conversation in
Announcements
v0.1.1
#78
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
This is
v0.1.1!!!What's in here
Here is what
v0.1.1represents as a whole:Wire Protocol & Versioning
protocol_versionfield inHello/HelloAck, bumped to4WireError):ProtocolMismatch,OpRejected,RateLimited,NotAuthorized,InternalMessageKind::Errorvariant; protocol mismatch now sendsWireError::ProtocolMismatchwhen possible before closing, instead of dropping the socket silentlyWireRetryPolicyenum (#[non_exhaustive]) describing per-error reconnect semantics (fatal, retry, retry-after, request-fatal)v0.1.0) + current binary reject incompatible protocol versions without exchanging opsReconnect Loop Backoff
WireError::RateLimited { retry_after_ms }honored, bounded by the configured reconnect max delay, without growing exponential backoffProtocolMismatch,NotAuthorized) stop automatic reconnect for that configured peer with awarn!logPeerReconnectState::stop()+ guarded loop: a stopped peer is never retried until resetDuration::MAXretry-after no longer panicsSchema & Migration
__nx/schema/<table>v0 -> v1: validates existing records without rewriting payloadsN -> N+1upgradesv0.1.0tagOffline Migration CLI
nx migrate --datastore-path ./nx-data--max-records,--max-bytes(default4MiB, resolved from a single source of truth)MigrationError::MissingDatastore { path }instead of an ad-hoc CLI bailnx runandnx configsync_manager Refactor
sync_manager.rssplit intosync_manager/submodulesOpAppliertrait per CRDT familytests/e2e/Crate Versions Pinned
version = "0.1.1"alongside itspath, across the workspace and all examplescargo package --workspace --no-verify --offlinenow passesDocs
WireErrorsemantics table (retry policy + meaning per variant) innx-netreference4and the newErrorframenx migratev0.1.1block (Split, Wire Versioning, Schema Versioning, Typed Error Frames) is now closedsync_manager.rs; they will be cleaned up in a follow-up docs passWhat this changes
v0.1.0was the first stable line for non-critical workloads.v0.1.1answers a different question: what happens the day you actually needto upgrade a running cluster ?
nx migratecan be pointed at a stopped datastore and produce a valid, upgraded one, in bounded batches, without ever starting a node.The closing criterion for
v0.1.1on the roadmap was:Both hold as of this release.
Upgrade notes
From
v0.1.1-rc.1Drop-in. Same wire protocol (
4), same on-disk schema, same CLI surface.Only visible source break:
WireRetryPolicyis now#[non_exhaustive]; if youwere matching on it exhaustively, add a
_arm.From
v0.1.0Wire protocol goes
2 -> 4.v0.1.0andv0.1.1nodes will not talk to eachother. Upgrade the whole cluster.
On-disk schema is versioned starting from this line. Before starting a
v0.1.1node on av0.1.0datastore:v0.1.1node against the migrated datastore.The migration is bounded (
--max-records,--max-bytes) and resumable.What is next
v0.1.2- Performance & Profiling.The roadmap for
v0.1.2is already published: automatic profiling, per-moduleCPU/memory metrics, and a regression gate in CI so any PR that worsens sync
p99 latency, throughput or RSS above the configured budget gets blocked
automatically.
Thank you !! :)
This discussion was created from the release v0.1.1.
All reactions