Skip to content

fix: Intermediate nodes for GET/PUT/UPDATE have stats: None, blind to health tracking #3527

@sanity

Description

@sanity

Problem

PR #3526 fixed the stats: None gap for subscribe operations at intermediate forwarding nodes. The same gap exists in GET, PUT, and UPDATE operations:

  • get.rs:1056 — intermediate GET forward sets stats: None
  • put.rs:256 — intermediate PUT forward sets stats: None
  • update.rs:312 — intermediate UPDATE forward sets stats: None

When an intermediate node forwards one of these operations and it times out, the failure is invisible to both PeerHealthTracker and the router's isotonic failure estimator. This means black-hole peers are never penalized for dropping these operations.

Subscribe was hit hardest because of its multi-hop chain topology, but GET/PUT/UPDATE have the same structural blind spot.

Approach

Follow the same pattern as the subscribe fix in PR #3526: set stats: Some(...) with the target peer and contract location when forwarding at intermediate nodes.

Context

Discovered during investigation of #3523 (black-hole peers). The subscribe fix is in PR #3526.

[AI-assisted - Claude]

Metadata

Metadata

Assignees

Labels

A-networkingArea: Networking, ring protocol, peer discoveryE-easyExperience needed to fix/implement: Easy / not muchP-highHigh priorityT-bugType: Something is broken

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions