-
-
Notifications
You must be signed in to change notification settings - Fork 114
Open
Labels
Description
The internal struct implementing the LargeObjectFile interface keeps track of which segments it has uploaded since {Dynamic,Static}LargeObjectCreate. When the upload fails (either during PUT of another segment or PUT of the manifest), it is useful to know which segments were already uploaded in order to perform cleanup.
Since LargeObjectFile does not have a method to expose its segments, one can only perform this cleanup by listing the uploaded segments, i.e.
names, err := conn.ObjectNameAll(segmentContainer,
&swift.ObjectsOpts{Prefix: segmentPrefix},
)
... handle err ...
result, err := conn.BulkDelete(segmentContainer, names)
However, this is prone to eventual consistency issues: The segments might not yet be visible in the container listing. I see two possible options:
- Add a method like
SegmentNames() []stringto theLargeObjectFileinterface. - Add a method
Cleanup() errororReset() errorto theLargeObjectFileinterface that deletes all segments which were uploaded since{Dynamic,Static}LargeObjectCreate.