Skip to content

[0.15 backport] snapshot/containerd: fix wrong errdefs package import#5195

Merged
AkihiroSuda merged 1 commit into
moby:v0.15from
thaJeztah:0.15_backport_fix_wrong_errdefs
Jul 30, 2024
Merged

[0.15 backport] snapshot/containerd: fix wrong errdefs package import#5195
AkihiroSuda merged 1 commit into
moby:v0.15from
thaJeztah:0.15_backport_fix_wrong_errdefs

Conversation

@thaJeztah
Copy link
Copy Markdown
Member

I noticed that we were importing the nydus errdefs package here, and looking at f044e0a9468639559db93fe30ee826ce502ac481 (v0.12.0-rc1), which introduced this import, this very likely was meant to be containerd's errdefs package.

The only function consumed from the package is errdefs.IsNotFound which at the time of the commit was not compatible with containerd's errdefs.IsNotFound as it was checking for the nydus error specifically.

Nydus-snapshotter v0.8.0 fixed this incompatibility by aliasing the error to containerd's ErrNotFound and was updated through 483e87725e7fd99124e3e767143687cfd1d59a8e.

Ironically, the original commit f044e0a9468639559db93fe30ee826ce502ac481 broke vendoring, because the Nydus errdefs was no longer vendored. This was fixed in 75dd88efb808edb8c91755565a4417f37b985143, but failed to notice that the missing vendor was due to an incorrect import.

So it looks like things were broken twice in the chain of events (once because the wrong errdefs package did not match the expected error; once because the errdefs package was missing), but all of them landed in v0.12.0-rc1, so nothing broke in a release ':-)

This PR;

  • fixes the wrong import
  • adds a depguard rule to prevent accidental importing of this package

(cherry picked from commit c6745c3)

I noticed that we were importing the nydus errdefs package here, and
looking at [f044e0a][1] (v0.12.0-rc1),
which introduced this import, this very likely was meant to be containerd's
errdefs package.

The only function consumed from the package is `errdefs.IsNotFound` which at
the time of the commit was not compatible with containerd's `errdefs.IsNotFound`
as it was [checking for the nydus error specifically][2].

Nydus-snapshotter v0.8.0 fixed this incompatibility by aliasing the error to
[containerd's `ErrNotFound`][3] and was updated through [483e877][4].

Ironically, the original commit [f044e0a][1]
broke vendoring, because the Nydus errdefs was no longer vendored. This was
fixed in [75dd88e][4], but failed to notice
that the missing vendor was due to an incorrect import.

So it looks like things were broken _twice_ in the chain of events (once
because the wrong errdefs package did not match the expected error; once
because the errdefs package was missing), but all of them landed in v0.12.0-rc1,
so nothing broke in a release ':-)

This PR;

- fixes the wrong import
- adds a depguard rule to prevent accidental importing of this package

[1]: moby@f044e0a
[2]: https://github.com/moby/buildkit/blob/f044e0a9468639559db93fe30ee826ce502ac481/vendor/github.com/containerd/nydus-snapshotter/pkg/errdefs/errors.go#L22-L33
[3]: https://github.com/moby/buildkit/blob/f044e0a9468639559db93fe30ee826ce502ac481/vendor/github.com/containerd/nydus-snapshotter/pkg/errdefs/errors.go#L22-L33
[4]: moby@483e877
[5]: moby@75dd88e

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit c6745c3)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztah thaJeztah added this to the v0.15.2 milestone Jul 29, 2024
@AkihiroSuda AkihiroSuda merged commit 509c08c into moby:v0.15 Jul 30, 2024
@thaJeztah thaJeztah deleted the 0.15_backport_fix_wrong_errdefs branch July 30, 2024 22:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants