package hostops import ( "context" "errors" "os" "github.com/carlosframework/platform/internal/lease" "github.com/carlosframework/platform/internal/release" ) // A delete marker must stay until every data version below it is gone. // Removing it first could resurrect a failed Put's base bytes. The caller // must also hold the existing exclusive purge authority against recreation. func retiredRecordVersion(ctx context.Context, control release.Store, versions lease.VersionedStore, bucket, key, id string) error { if _, _, err := control.Get(ctx, key); !errors.Is(err, os.ErrNotExist) { if err != nil { return err } return ErrPending } all, err := versions.ListVersions(ctx, bucket, key) if err != nil { return err } marker, data := false, false for _, v := range all { if v.Key != key { continue } if v.VersionID == id { marker = v.DeleteMarker } if !v.DeleteMarker { data = true } } if marker && data { return ErrPending } return nil }