Handle nasty race condition when putting tombstone #1435
1 changed files with 4 additions and 3 deletions
|
@ -32,6 +32,10 @@ type LocalTarget struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t LocalTarget) WriteObject(ctx context.Context, obj *objectSDK.Object, meta objectCore.ContentMeta) error {
|
func (t LocalTarget) WriteObject(ctx context.Context, obj *objectSDK.Object, meta objectCore.ContentMeta) error {
|
||||||
|
if err := t.Storage.Put(ctx, obj, containerCore.IsIndexedContainer(t.Container)); err != nil {
|
||||||
|
return fmt.Errorf("(%T) could not put object to local storage: %w", t, err)
|
||||||
|
}
|
||||||
|
|
||||||
switch meta.Type() {
|
switch meta.Type() {
|
||||||
case objectSDK.TypeTombstone:
|
case objectSDK.TypeTombstone:
|
||||||
err := t.Storage.Delete(ctx, objectCore.AddressOf(obj), meta.Objects())
|
err := t.Storage.Delete(ctx, objectCore.AddressOf(obj), meta.Objects())
|
||||||
|
@ -47,8 +51,5 @@ func (t LocalTarget) WriteObject(ctx context.Context, obj *objectSDK.Object, met
|
||||||
// objects that do not change meta storage
|
// objects that do not change meta storage
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := t.Storage.Put(ctx, obj, containerCore.IsIndexedContainer(t.Container)); err != nil {
|
|
||||||
return fmt.Errorf("(%T) could not put object to local storage: %w", t, err)
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue