Skip to content

v0.2.0

Latest

Choose a tag to compare

@b-erdem b-erdem released this 08 May 18:15

First minor release. Highlights:

Fixed

  • Race: late NEIGHBOR_REPLY re-adding a dead peer to the active view (#1). State now keeps a small recently_lost deny-list of peer ids evicted via connection_lost/2; the reply handler rejects only replies whose sender is in that set, everything else is accepted as before. Found and reproduced by Lockstep.

Changed (breaking)

  • HyParView.Transport callback signature: listen/2 now takes a 1-arity event_callback instead of a 2-arity deliver callback. Events are {:message, peer, msg} and {:peer_lost, peer}.

Added

  • HyParView.Transport.TCP auto-signals {:peer_lost, peer} on TCP close — reactive recovery fires without applications needing to call connection_lost/2 themselves.
  • TCP_NODELAY enabled on every Transport socket — short protocol messages no longer wait up to 40ms for Nagle. Found via the hyparview_pubsub_bench companion project.
  • HyParView.subscribe/3 :replay option for late subscribers.
  • HyParView.Telemetry.Metrics — pre-built Telemetry.Metrics definitions; drop into Prometheus / StatsD / any reporter. Optional dep on :telemetry_metrics ~> 1.0.

Tested

  • HyParView.PartitionTest — partition + heal property tests.
  • HyParView.ConnectionTest — Connection error-path coverage.
  • HyParView.ConnectionLostRaceTest — H1 regression test.
  • Coverage bumped to 89% (test-support modules excluded from the average).

See CHANGELOG.md for full notes and the upgrade impact of the breaking Transport change.