containerd / nerdctl

contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ...
Apache License 2.0
8.22k stars 612 forks source link

Remove all `walkers` #3502

Open apostasie opened 1 month ago

apostasie commented 1 month ago

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

apostasie commented 1 month ago

/label refactor