containerd / containerd/nerdctl

Remove all `walkers`

Open
#3,502 1 comment 0 reactions 0 assignees View on GitHub
kind/feature
Dominant language
Go
Stars
10.4k
Forks
826
Avg merge
1d 23h
Merged PRs (30d)
44

Description

### What is the problem you're trying to solve

We do have a number of `walkers` abstractions around (for network, images, etc.).

They may have seemed like a good abstraction at the time, but they are more trouble than anything, because they just hide the fact that resources come and go - and by the time they call the handler, the corresponding resource may have disappeared - unless the caller does enforce locking *around the walker*, which defeats the purpose of a simple functional abstraction.

At this point, it feels like `walkers` are just over-engineering with no purpose: a pattern that does not deliver any concrete value, while making issues harder to debug.

### Describe the solution you'd like

Remove walkers and replace them with simple functions returning slices.
If the consumer wants a walker, they can implement it themselves very easily.
While looking at concurrency issues again (#3501) it is clear they are part of the problem.

### Additional context

_No response_

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.