Merged
Conversation
The tracing statement for `user.gid` was reading from `user.uid` instead of `user.gid`, causing the wrong value to be reported.
Replace `into_iter().next().is_none()` with `list().is_empty()` for clarity, and use `list().iter()` for the actual collection.
This was likely a debugging leftover — the error source chain is already captured via the `successors` iterator below.
JSON serialization and file write can fail at runtime (e.g. disk full). Log the error and continue the loop instead of crashing, since this tool may run continuously for hours.
std::thread::sleep blocks the entire tokio worker thread. Since main is already async, use the non-blocking alternative.
In a container debugging tool, broken DNS config (/etc/resolv.conf) is a likely scenario to diagnose. Log the error and skip DNS lookups instead of panicking.
…andling The network collector silently swallowed interface listing errors by returning empty data. Now it returns Result so the orchestrator wraps it in ComponentResult, matching the pattern used by other fallible collectors. Errors appear in JSON output instead of being silently lost.
HashMap produces non-deterministic JSON output, making it hard to diff containerdebug output across runs. BTreeMap sorts keys consistently.
Member
|
Thanks for breaking into specific commits. Made it easy to review. |
3 tasks
Member
Author
|
You were too fast :) |
Member
Author
|
Thanks for the review! Does GitHub have a proper "commit by commit"-review mode? I thought I read something on that but couldn't find it now. Found it. I was more hoping for a "next commit" / "previous commit" kinda style. |
Member
Author
|
Thanks Sascha. I pulled those updates out into a separate pr #56 |
Member
|
Ah, my bad. I will review the other PR then. EDIT: I've approved #56 which is getting merged. I will rebase this PR as soon as it is merged so that we can close this one off. |
Techassi
approved these changes
Mar 30, 2026
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Important
PR #56 should fix the cargo deny warning. So review that first.
I looked into a problem with containerdebu I found during debugging a customer.
In the course I had Claude do a sweep of the code for potential bugs. This PR fixes all of them.
You can review commit by commit as well. Each fix has its own commit.
Collection of bug fixes and code quality improvements found during code review:
user.gidwas reading fromuser.uid, reporting wrong valuesinto_iter().next().is_none()withlist().is_empty().source()call with unused result in error reportingunwrap()on JSON serialization and file write with error logging, so the long-running process doesn't crash on transient failures (e.g. disk full)tokio::time::sleepinstead ofstd::thread::sleepin async context/etc/resolv.confby skipping DNS lookups instead of panicking — broken DNS config is a likely scenario for a container debugging toolResult, wrapped inComponentResultby the orchestrator so errors appear in JSON output instead of being silently swallowedBTreeMapinstead ofHashMapfor stable key ordering, making output diffable across runsTest plan
cargo test --all-featurespassescargo clippywithRUSTFLAGS="-D warnings"passescargo fmtapplied