Page MenuHomePhabricator

Instead of retrying safe reads 3 times, retry each eligible service once
ClosedPublic

Authored by epriestley on Sep 3 2019, 5:41 PM.
Tags
None
Referenced Files
F18105204: D20777.id49543.diff
Sun, Aug 10, 4:51 PM
F17847729: D20777.id.diff
Sun, Jul 27, 6:28 AM
F17840444: D20777.diff
Sat, Jul 26, 9:09 PM
F17839894: D20777.diff
Sat, Jul 26, 8:32 PM
F17831211: D20777.diff
Sat, Jul 26, 11:47 AM
F17784090: D20777.id.diff
Jul 24 2025, 11:27 AM
F17760124: D20777.diff
Jul 22 2025, 7:14 PM
Unknown Object (File)
Jul 2 2025, 2:09 AM
Subscribers
None

Details

Summary

Ref T13286. When retrying a read request, keep retrying as long as we have canididate services. Since we consume a service with each attempt, there's no real reason to abort early, and trying every service allows reads to always succeed even if (for example) 8 nodes of a 16-node cluster are dead because of a severed network link between datacenters.

Test Plan

Ran git pull in a clustered repository with an up node and a down node; saw retry count dynamically adjust to available node count.

Diff Detail

Repository
rP Phabricator
Branch
fallback3
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 23368
Build 32099: Run Core Tests
Build 32098: arc lint + arc unit