Auto-upgrade from Foolscap to HTTP storage protocol #4043

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

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.
itamarst added the
unknown
normal
task
n/a
labels 2023-07-06 15:18:15 +00:00
itamarst added this to the HTTP Storage Protocol milestone 2023-07-06 15:18:15 +00:00
Author

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.
Author

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.
Author

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`
Author

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.
itamarst added the
wontfix
label 2023-07-19 16:36:42 +00:00
Sign in to join this conversation.
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

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