HydraCache 0.39.0
HydraCache 0.39.0
0.39.0 is a cluster staging-hardening release. It does not claim that
HydraCache is a production distributed data grid. Instead, it turns the existing
cluster building blocks into a repeatable staging gate with structured health,
load reporting, actuator output, transport checks, raft metadata smoke coverage,
and sandbox replay routes.
Highlights
- Deterministic in-memory cluster staging harness with 2-member/2-client gate
coverage, generation-safe invalidation propagation, stale-generation fencing,
owner-load, remote-fetch, hot-cache-hit, auth, and wire-version scenarios. - New
ClusterHealthState,ClusterHealthReason, andClusterStagingHealth
summaries with machine-readableHealthy,Degraded, andNotReadystates. - New
ClusterLoadReportfor logical staging counters. Wall-clock duration is
recorded but never used by the deterministic gate. - Separate owner-load, remote-fetch, and hot-cache-hit counters surfaced through
runtime APIs, observability registry helpers, actuator JSON, and sandbox
reports. - Gossip-reset diagnostic fields (
tombstone_age_ms,gossip_reset_count) that
downgrade staging health toDegradedwhen recent reset signals are present. ClusterComponentandClusterLifecycleComponentlifecycle primitives for
background cluster components without changing local cache hot-path reads.- New actuator route:
GET /actuator/hydracache/cluster/staging-health. - New sandbox replay routes:
POST /sandbox/cluster/staging-gatePOST /sandbox/cluster/leave-rejoinPOST /sandbox/cluster/stale-generationPOST /sandbox/cluster/peer-fetch-auth-wire
Changes
- Add
hydracache::testing::StagingClusterHarness,GatePlan, and
StagingGateOutcomefor deterministic release gates and sandbox scenarios. - Add
HydraCache::cluster_fill_counters,
HydraCache::cluster_staging_counters, and
HydraCache::cluster_staging_health. - Add explicit recording methods for owner-load, remote-fetch, hot-cache,
auth/wire rejection, stale-generation, and gossip-reset staging counters. - Wire read-through and owner-load paths in
hydracache-cluster-transport-axumto the three-part fill counters. - Add transport staging gate tests for auth accept/deny and wire-version
accept/reject behavior. - Add raft staging gate coverage that persists generation metadata through
InMemoryRaftMetadataStoreand rejects stale generation after recovery. - Add
hydracache-observabilityregistry helpers for staging health snapshots. - Add actuator JSON snapshot coverage for stable
ClusterStagingHealthshape. - Add sandbox route integration tests for every staging replay endpoint and
update the generated sandbox fetch client. - Update
docs/PRODUCTION_CLUSTER_READINESS.mdwith the 0.39 staging runbook. - Bump the workspace crates to
0.39.0.
Verification
This release should pass:
cargo fmt --all -- --checkcargo check --workspace --all-targets --lockedcargo test --workspace --all-targets --lockedcargo test --doc --workspace --lockedRUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --lockedcargo test -p hydracache --test cluster_staging_gate --lockedcargo test -p hydracache --test cluster_component_lifecycle --lockedcargo test -p hydracache cluster::tests::staging_health --lockedcargo test -p hydracache cluster::tests::fill_ --lockedcargo test -p hydracache-actuator-axum --test cluster_staging_health_snapshot --lockedcargo test -p hydracache-cluster-transport-axum --test staging_gate --lockedcargo test -p hydracache-cluster-raft --test staging_gate --lockedcargo test -p hydracache-sandbox --test cluster_staging_routes --locked
Ignored soak remains manual and is the only wall-clock-budget assertion:
$env:HC_SOAK_REQUESTS = "10000"
$env:HC_SOAK_CONCURRENCY = "32"
cargo test -p hydracache --test cluster_staging_gate --locked -- --ignored cluster_staging_gate_soak_under_sustained_load