-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use the Id parameter to recognize spaces #3388
Comments
Also, even if we want to use a single ID across all providers, it should be the |
@ishank011 The StorageID is the spaceID and must be unique |
The resourceID is always |
I think you mean |
A storage space is a Folder on a storage provider which is marked as a space Root. It is used as a root reference for relative paths inside a root. A Single Storage Provider can host unlimited numbers of storage Spaces
The spaceID is the ID of the RootFolder of a space. This folder has a ResourceID. The ResourceID of a SpaceRoot always consists the same StorageID and OpaqueID. That means on a Space Root |
|
@ishank011 we should probably have a quick call to clarify things? |
@butonic calendar invite sent |
@labkode @ishank011 Please add more context to the question. From my side, all questions are anwered. |
All Storage providers need to provide UUIDs. That is a hard requirement. We cannot rely on Inodes or something which is not a "logical unique identifier". SpaceIDs must survive cross storage moves. |
@micbar migration scenarios should be handled separately in case of conflicts IMO, given the frequency of such events happening compared to how much we use space lookups. In our deployment, counting each share as a space, we have 500k+ spaces and for each metadata call, retrieving all of those and checking that there's an ID match is not a good idea at all. Also, given how heterogenous our drivers are, implementing this functionality in all of those adds a pretty big overhead. |
So you consider shares as spaces? IMO this is different from our view. We consider Storage Spaces and Shares as different entities. Shares are represented on the drives endpoint as Space type "mountpoint". A Share is
Please check out #3365 You can see how we work with compound IDs on the grant and the mountpoint. |
Even if you have a separate category for shares, the scalability issue still remains. |
What do you suggest? |
See diagram below. The current implementation does not rely on SpaceID (storageID + opaqueID) to find storages, but solely on the storageID, that is not enough to route a request (broken label in the diagram). Also, as @ishank011 explained, the way matching is done to identify a space in a storage provider is inefficient. A spaceID created as StorageID+OpaqueID gives two benefits: So the implementation for routing should take into account this layout to avoid this self-inflicted ineficiency, and in case the spaceID does not contain the StorageID, then you fallback to ask every single storage provider to find the space (current implementation). Regarding the shares, we need to discuss it, either they are spaces and treat it as such or they are a different entity and they are managed in a different way. We need to understand the inner mechanics for implementation in EOS. |
@labkode @ishank011 The current implementation uses the spaceID ocis/graph/pkg/service/v0/drives.go Lines 547 to 553 in 4cbec0a
|
@micbar any update after our discussion on how the spaces registry works? |
yes, @butonic created new tickets, let me check |
this is the one about the registry #3431 |
And there is a description which @butonic created one year ago about the resourceIDs https://owncloud.dev/extensions/storage/proposedchanges/#space-providers We just didn't implement it yet. But we concluded that we would need the storageproviderID also and switch to the static registry also on the IMO this would unblock everything. |
@micbar sounds really good. Thanks a lot! |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 10 days if no further activity occurs. Thank you for your contributions. |
@butonic has this been fixed already? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 10 days if no further activity occurs. Thank you for your contributions. |
ocis/graph/pkg/service/v0/drives.go
Lines 525 to 531 in a99f725
Why aren't we using
space.Id
anywhere? Just recognizing a space by a single ID is wrong as there can be clashes across storage providers, and not all providers will be using UUIDs.The text was updated successfully, but these errors were encountered: