Auto-upgrade from Foolscap to HTTP storage protocol #4043

Closed
opened 2023-07-06 15:18:15 +00:00 by itamarst · 4 comments
itamarst commented 2023-07-06 15:18:15 +00:00
Owner

Ideally, a client would not rely on an update from the introducer to give it the GBS NURL for the updated storage server. Therefore, when an updated client connects to a storage server using Foolscap, it should request the server's version information.

If this information indicates that GBS is supported then the client should cache this GBS information. On subsequent connection attempts, it should make use of this GBS information.

Ideally, a client would not rely on an update from the introducer to give it the GBS NURL for the updated storage server. Therefore, when an updated client connects to a storage server using Foolscap, it should request the server's version information. If this information indicates that GBS is supported then the client should cache this GBS information. On subsequent connection attempts, it should make use of this GBS information.
tahoe-lafs added the
unknown
normal
task
n/a
labels 2023-07-06 15:18:15 +00:00
tahoe-lafs added this to the HTTP Storage Protocol milestone 2023-07-06 15:18:15 +00:00
itamarst commented 2023-07-06 16:06:45 +00:00
Author
Owner

Implementation:

  • The server's version message gets the NURLs added.
  • Clients are OK with NURLs being missing.
  • If the NURL is there and the client is configured to support HTTP, it gets rid of Foolscap and switches to HTTP.
Implementation: * The server's version message gets the NURLs added. * Clients are OK with NURLs being missing. * If the NURL is there _and_ the client is configured to support HTTP, it gets rid of Foolscap and switches to HTTP.
itamarst commented 2023-07-07 15:18:10 +00:00
Author
Owner

Initial implementation sketch has FoolscapStorageServer's remotely exposed get_version() return the NURLs if known. However... one can imagine the HTTP server's NURLs changing, and right now that is never communicated to the client and the client never knows.

With a little tweaking of the design, the same Foolscap to HTTP upgrade code can also change the NURLs in a HTTP-only client, so probably going to go down that route.

Initial implementation sketch has [FoolscapStorageServer](wiki/FoolscapStorageServer)'s remotely exposed `get_version()` return the NURLs if known. However... one can imagine the HTTP server's NURLs changing, and right now that is never communicated to the client and the client never knows. With a little tweaking of the design, the same Foolscap to HTTP upgrade code can also change the NURLs in a HTTP-only client, so probably going to go down that route.
itamarst commented 2023-07-07 15:48:45 +00:00
Author
Owner

Fields that are in the announcement that get_version() probably doesn't need but might:

  1. The node nickname
  2. permutation-seed-base32
Fields that are in the announcement that `get_version()` _probably_ doesn't need but might: 1. The node `nickname` 2. `permutation-seed-base32`
itamarst commented 2023-07-19 16:36:42 +00:00
Author
Owner

In the end we decided to abandon this, and just rely on introducer or situation-specific upgrade code.

In the end we decided to abandon this, and just rely on introducer or situation-specific upgrade code.
tahoe-lafs added the
wontfix
label 2023-07-19 16:36:42 +00:00
itamarst closed this issue 2023-07-19 16:36:42 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: tahoe-lafs/trac-2024-07-25#4043
No description provided.