Opened at 2022-10-13T17:33:58Z
Closed at 2023-03-21T16:51:43Z
#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
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:
- 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...
- DONE: Unit test that use plugged in HTTP request
- Stop using DeferredList?, it's awful
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:
Jean-Paul's guess is that Foolscap just tries them in order, vs Happy Eyeballs which tries in parallel.