Skip to content

erayack/edge-consistency

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Edge Consistency Lab

A PoC simulation harness for probing edge-cache consistency failure boundaries under configurable fault injection.

What it does

Runs a closed-loop experiment:

  • A mutation source publishes versioned writes, a chaos router delivers them to edge nodes with configurable packet loss, delay, reordering, and partitions.
  • Client simulators roam across edges reading and writing data.
  • A metrics collector tracks stale reads, read-your-writes violations, monotonic-read violations, inversion distance severity (version and temporal buckets), micro-inversions, and time-to-consistency latency.
  • Results are persisted as a JSON artifact.

Metrics snapshot highlights

  • metrics_snapshot.monotonic_violations: count of monotonic-read regressions.
  • metrics_snapshot.inversion_distance.version_buckets: logical rollback magnitude buckets (v1, v2_5, v6_20, v21_plus).
  • metrics_snapshot.inversion_distance.temporal_buckets: physical rollback lag buckets (lt_5ms, ms5_20, ms21_100, gt_100ms).
  • metrics_snapshot.inversion_distance.micro_inversions: violations where rollback is <5 versions and <20ms.

Usage

cargo run --release -- run --scenario scenario.json --out report.json

Scenario file

{
  "seed": 42,
  "duration_secs": 30,
  "edge_count": 3,
  "client_count": 16,
  "mutation_rate_per_sec": 10.0,
  "chaos": {
    "delay_ms": 50,
    "loss_rate": 0.05,
    "reorder_rate": 0.1,
    "partition_duration_ms": 500,
    "burst_lag_ms": null,
    "source_lag_policy": "ObserveAndContinue"
  },
  "steps": [
    { "at_secs": 10, "step": { "DropInvalidationsPercent": { "percent": 80.0 } } },
    { "at_secs": 20, "step": { "PartitionEdge": { "edge_id": 1, "duration_ms": 2000 } } }
  ]
}

Scenario steps

Step Effect
IncreaseMutationRate Change write rate mid-run
DropInvalidationsPercent Drop a percentage of invalidations delivered to edges
PartitionEdge Isolate one edge for a fixed duration
KillEdgeNode Permanently deactivate an edge

Environment variables

Variable Default Description
EDGE_CONSISTENCY_SOURCE_FANOUT_CAPACITY 1024 Broadcast channel capacity
RUST_LOG Tracing filter (e.g. info, debug)

Building & testing

cargo build --release
cargo test

Requires Rust 1.75+.

About

A simulation harness for probing edge-cache consistency failure boundaries under configurable fault injection.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors