The interface for the client-side storage plugin web resource has a one-to-many conflict #3258
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#3258
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Storage plugins can contribute to the web interface on client nodes. They do this by implementing
IFoolscapStoragePlugin.get_client_resource
. This is somewhat awkward to implement because it does not receive all of the same information thatIFoolscapStoragePlugin.get_storage_client
receives and collecting that information whereget_client_resource
needs to be called is challenging to implement.This divergence in available information is caused by the following conflict.
get_client_resource
is expected to return a single resource which represents "the plugin". However,get_storage_client
is called on a per-server basis to get anIStorageServer
provider specifically for that single server. Since a Tahoe-LAFS client can be connected to many servers, this call may be made many times to create many objects.I don't see any way to easily simultaneously accommodate both of these constraints.
Get the client-side web resource for storage plugins from the storage object itselfto The interface for the client-side storage plugin web resource has a one-to-many conflictOriginally I thought that there was a solution to this that involved making a web resource per-storage-server as well. This may indeed end up being a solution but it is more involved than I thought. There still very likely needs to be a per-plugin resource that can act as some kind of container for the per-storage-server resources.
For the time being, I think I can get by with the interface as-is - by imposing some additional constraints on the plugin I am implementing outside of Tahoe-LAFS. At some point I will want to revisit this, though, and almost certainly make interface changes here.
I've edited the ticket description to more directly describe the problem instead of my hypothesized solution.