#3935 closed enhancement (fixed)

Happy Eyeballs for NURLs

Reported by: itamarst Owned by: GitHub <noreply@…>
Priority: normal Milestone: HTTP Storage Protocol
Component: unknown Version: n/a
Keywords: Cc:
Launchpad Bug:

Description

A storage server may have multiple NURLs. Not all of them may work. So we need some equivalent of Happy Eyeballs algorithm to figure out which one to use: https://en.wikipedia.org/wiki/Happy_Eyeballs

Change History (5)

comment:1 Changed at 2022-11-16T16:06:33Z by itamarst

Jean-Paul's guess is that Foolscap just tries them in order, vs Happy Eyeballs which tries in parallel.

comment:2 Changed at 2022-11-22T16:03:58Z by itamarst

Meejah, on the other hand, guesses that Foolscap does do happy eyeballs, pointing at "connection.py".

comment:3 Changed at 2023-01-26T16:39:04Z by itamarst

Initial thought: when doing the initial version check (which is read-only and cheap), try all addresses. Whichever one gets back first wins, and after that point that address is used forever.

If a failure occurs, however, this resets and the parallel request is tried again.

comment:4 Changed at 2023-02-21T15:44:40Z by itamarst

To implement:

  1. End to end test with bad URLs (http://localhost:0, real server that just accepts connection and never responds) in addition to good URL. Not sure how to do this...
  2. DONE: Unit test that use plugged in HTTP request
  3. Stop using DeferredList?, it's awful
Last edited at 2023-02-23T15:23:11Z by itamarst (previous) (diff)

comment:5 Changed at 2023-03-21T16:51:43Z by GitHub <noreply@…>

  • Owner set to GitHub <noreply@…>
  • Resolution set to fixed
  • Status changed from new to closed

In 559e2ec/trunk:

Merge pull request #1262 from tahoe-lafs/3935-happy-eyeballs

MVP happy eyeballs for HTTP storage protocol

Fixes ticket:3935
Fixes ticket:3981

Note: See TracTickets for help on using tickets.