diff --git a/cmd/stbak/cmd/delete.go b/cmd/stbak/cmd/delete.go index 076f291..b5dcdfa 100644 --- a/cmd/stbak/cmd/delete.go +++ b/cmd/stbak/cmd/delete.go @@ -133,11 +133,6 @@ func delete( // Append deletion hdrs to the tape or tar file hdrs := []*tar.Header{} for _, dbhdr := range headersToDelete { - // Check if the header hasn't already been deleted; the records will be corrected in the last index step - if _, err := metadataPersister.DeleteHeader(context.Background(), dbhdr.Name, -1, -1, false); err != nil { - return err - } - hdr, err := converters.DBHeaderToTarHeader(dbhdr) if err != nil { return err diff --git a/internal/persisters/metadata.go b/internal/persisters/metadata.go index 84e7ae5..a8ca38a 100644 --- a/internal/persisters/metadata.go +++ b/internal/persisters/metadata.go @@ -95,7 +95,10 @@ func (p *MetadataPersister) GetHeaders(ctx context.Context) (models.HeaderSlice, } func (p *MetadataPersister) GetHeader(ctx context.Context, name string) (*models.Header, error) { - return models.FindHeader(ctx, p.db, name) + return models.Headers( + qm.Where(models.HeaderColumns.Name+" = ?", name), + qm.Where(models.HeaderColumns.Deleted+" != 1"), + ).One(ctx, p.db) } func (p *MetadataPersister) GetHeaderChildren(ctx context.Context, name string) (models.HeaderSlice, error) { @@ -194,20 +197,16 @@ where %v like ? return headers, nil } -func (p *MetadataPersister) DeleteHeader(ctx context.Context, name string, lastknownrecord, lastknownblock int64, ignoreNotExists bool) (*models.Header, error) { +func (p *MetadataPersister) DeleteHeader(ctx context.Context, name string, lastknownrecord, lastknownblock int64) (*models.Header, error) { hdr, err := models.FindHeader(ctx, p.db, name) if err != nil { - if err == sql.ErrNoRows && ignoreNotExists { + if err == sql.ErrNoRows { return nil, nil } return nil, err } - if hdr != nil && hdr.Deleted == 1 && !ignoreNotExists { - return nil, sql.ErrNoRows - } - hdr.Deleted = 1 hdr.Lastknownrecord = lastknownrecord hdr.Lastknownblock = lastknownblock diff --git a/pkg/recovery/index.go b/pkg/recovery/index.go index 5ebe5ac..6b3351b 100644 --- a/pkg/recovery/index.go +++ b/pkg/recovery/index.go @@ -306,7 +306,7 @@ func indexHeader( return err } case pax.STFSRecordActionDelete: - if _, err := metadataPersister.DeleteHeader(context.Background(), hdr.Name, record, block, true); err != nil { + if _, err := metadataPersister.DeleteHeader(context.Background(), hdr.Name, record, block); err != nil { return err } case pax.STFSRecordActionUpdate: