From c245347e96547adfd8e5df8d90d54485a152f611 Mon Sep 17 00:00:00 2001 From: guodong Date: Wed, 16 Nov 2022 23:04:26 +0800 Subject: [PATCH] tx rollback when GetInfo return error Signed-off-by: guodong --- snapshots/overlay/overlay.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/snapshots/overlay/overlay.go b/snapshots/overlay/overlay.go index 50b8af10b..813b758db 100644 --- a/snapshots/overlay/overlay.go +++ b/snapshots/overlay/overlay.go @@ -154,9 +154,17 @@ func (o *snapshotter) Update(ctx context.Context, info snapshots.Info, fieldpath return snapshots.Info{}, err } + rollback := true + defer func() { + if rollback { + if rerr := t.Rollback(); rerr != nil { + log.G(ctx).WithError(rerr).Warn("failed to rollback transaction") + } + } + }() + info, err = storage.UpdateInfo(ctx, info, fieldpaths...) if err != nil { - t.Rollback() return snapshots.Info{}, err } @@ -171,6 +179,7 @@ func (o *snapshotter) Update(ctx context.Context, info snapshots.Info, fieldpath info.Labels[upperdirKey] = o.upperPath(id) } + rollback = false if err := t.Commit(); err != nil { return snapshots.Info{}, err }