Skip to content

Commit

Permalink
tolerate invalid cni caches for deletion
Browse files Browse the repository at this point in the history
Signed-off-by: Henry Wang <henwang@amazon.com>
  • Loading branch information
henry118 committed Mar 7, 2024
1 parent 845a737 commit 2d04079
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
11 changes: 7 additions & 4 deletions libcni/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -586,9 +586,9 @@ func (c *CNIConfig) DelNetworkList(ctx context.Context, list *NetworkConfigList,
if gtet, err := version.GreaterThanOrEqualTo(list.CNIVersion, "0.4.0"); err != nil {
return err
} else if gtet {
cachedResult, err = c.getCachedResult(list.Name, list.CNIVersion, rt)
if err != nil {
return fmt.Errorf("failed to get network %q cached result: %w", list.Name, err)
if cachedResult, err = c.getCachedResult(list.Name, list.CNIVersion, rt); err != nil {
_ = c.cacheDel(list.Name, rt)
cachedResult = nil
}
}

Expand All @@ -598,7 +598,10 @@ func (c *CNIConfig) DelNetworkList(ctx context.Context, list *NetworkConfigList,
return fmt.Errorf("plugin %s failed (delete): %w", pluginDescription(net.Network), err)
}
}
_ = c.cacheDel(list.Name, rt)

if cachedResult != nil {
_ = c.cacheDel(list.Name, rt)
}

return nil
}
Expand Down
4 changes: 2 additions & 2 deletions libcni/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1474,15 +1474,15 @@ var _ = Describe("Invoking plugins", func() {
})

Context("when the cached result is invalid", func() {
It("returns an error", func() {
It("tolerates the error", func() {
cacheFile := resultCacheFilePath(cacheDirPath, netConfigList.Name, runtimeConfig)
err := os.MkdirAll(filepath.Dir(cacheFile), 0o700)
Expect(err).NotTo(HaveOccurred())
err = os.WriteFile(cacheFile, []byte("adfadsfasdfasfdsafaf"), 0o600)
Expect(err).NotTo(HaveOccurred())

err = cniConfig.DelNetworkList(ctx, netConfigList, runtimeConfig)
Expect(err).To(MatchError("failed to get network \"some-list\" cached result: decoding version from network config: invalid character 'a' looking for beginning of value"))
Expect(err).NotTo(HaveOccurred())
})
})
})
Expand Down

0 comments on commit 2d04079

Please sign in to comment.