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
F15458214: D20777.id.diff
Sun, Mar 30, 9:47 PM
F15428819: D20777.diff
Sun, Mar 23, 10:34 PM
F15425732: D20777.id49543.diff
Sun, Mar 23, 5:46 AM
F15424584: D20777.id.diff
Sat, Mar 22, 11:11 PM
F15395968: D20777.diff
Sun, Mar 16, 10:59 AM
F15333661: D20777.id.diff
Sat, Mar 8, 3:49 AM
F15332076: D20777.id49543.diff
Fri, Mar 7, 4:29 PM
F15332071: D20777.id49542.diff
Fri, Mar 7, 4:28 PM
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
Lint
Lint Not Applicable
Unit
Tests Not Applicable