-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
run --events-backend=file sometimes means journal #23750
Comments
I see the problem, fix should be simple. |
Nvm, I take that back. I think the flag is not being propagated correctly into the cleanup process but trying this out locally I see the correct conmon args being set for both cases. If the args are really the problem then my cleanup tracer from #23487 should log that. So I guess I should get that PR ready. |
Ok I think I know what is triggering this. The died event is created in syncContainer(), and syncContainer() must be called every time we lock the container basically. This means that any other command that acts on all container may notice the conmon exit file and creates the died event based on that. So even something like The conclusion the test is not parallel safe. (And knowing that every test using --events-backend may not be parallel safe I fear, at least all the ones that need the died event) |
If you want to verify this yourself (assuming journald is the default logger): terminal 1
terminal 2
terminal 3
terminal 4 (without unshare when running as root)
Just after a few seconds I got the died event in terminal 3 |
When you say "is not parallel safe", do you mean "not currently but it needs to be fixed," or "will never be parallel safe and we cannot guarantee that |
This is expected behavior, you select the events backend per podman process so that does not exclude another podman process with a different event logger from creating events for your container created by the original process. If you want to make sure all test see the same events you must make sure all podman commands run are using the same events backend. |
...or at least as much as possible. Some tests cannot be run in parallel due to containers#23750: "--events-backend=file" does not actually work the way a naïve user would intuit. Stop/die events are asynchronous, and can be gathered by *ANY OTHER* podman process running after it, and if that process has the default events-backend=journal, that's where the event will be logged. See containers#23987 for further discussion. Signed-off-by: Ed Santiago <[email protected]>
Any test that uses --events-backend=file cannot be run in parallel due to containers#23750. This seems to be a hard block, unfixable. All other tests, enable ci:parallel. And, bring in timing fixes containers#23600. Thanks, @Honny1! Signed-off-by: Ed Santiago <[email protected]>
A friendly reminder that this issue had no activity for 30 days. |
Closing: this is just something we will have to live with. |
Completely bizarre:
Only fails in parallel tests. The test itself is super short. There is no possible way it could fail (obviously this is a lie).
Most curious finding: in every case I looked at (three out of the five flakes), I go look at journal, search for
t160
, and the log line is in the journal. On successful test passes, the stringt160
does not appear in the journal.[sys] |090| events - labels included in container die
The text was updated successfully, but these errors were encountered: