-
Notifications
You must be signed in to change notification settings - Fork 14
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
Empty versions and object stores #535
Comments
You're right, but the "inventories are optional in version dirs" only exists to enable backporting of Moab versions (which are presumed to be WORM). We would expect that a new implementation would be creating inventories in every version directory. The spec says:
The definition of
So I feel that 'caveat emptor' is fine here. In Moab's case, we have a good reason and understand the implications. But if you don't have a good reason, you should always have an inventory file in your version dir. |
I completely agree that versions should contain an inventory copy. I was just pointing this out because not following this |
I don't see how it can produce invalid objects? You'd end up with an object that'd raise a |
The following will produce an invalid object:
Let's say that this creates
|
Well, I think in that circumstances, a couple of things will happen:
Such an implementing organization is welcome to drive past a caution sign, we're assuming they know what they're doing. If they don't, I don't think that's a problem with the spec. In the particular S3 situation described above, I strongly suspect the constructor will error out before it declares the object as finished. At some point during serialization it's going to be asking an S3 API to create an empty dir, and the S3 API is going to error out. If it choses to ignore that error and continue on, that's also not a problem with the spec. |
I think the key thing is that any implementation following the SHOULD to have an inventory with each version will create objects that are fine with filesystems and current object stores (including S3). As @julianmorley pointed out, the key reason for that SHOULD rather then MUST was to allow for legacy content. I hope/trust it will be standard practice for any new implementations to have an inventory with each version. |
Sure, I agree that every version should have an inventory. I only brought it up because it seemed substantively different than the other SHOULDS in the spec in regards to the consequences of not following the SHOULD resulting in invalid objects. No problem if this is not of concern. |
Closing this based on @pwinckles comment; I don't think there's anything actionable here. |
The spec states that:
It would seem that this behavior can only be supported on filesystem based implementations. That is to say, it is not possible to represent a version in, say S3, that does not include any content changes and does not store a copy of the version's inventory.
The text was updated successfully, but these errors were encountered: