-
Notifications
You must be signed in to change notification settings - Fork 12
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
Sometimes not possible to add multiple interface in different transactions #938
Comments
wkz
added a commit
that referenced
this issue
Feb 11, 2025
Fix #938 Before this change, interface dependencies were only setup when interfaces were created. This led to problems in flows like this: 1. configure set interface br0 set interface br0.10 leave 2. configure set interface dummy0 leave 2. configure no interface br0 no interface br0.10 leave Since neither br0 nor br0.10 was created in (2), no dependencies were setup. Because of that, when the deletion scripts from generation (2) are generated when entering (3), dagger is free to execute them in any order. This means that it may choose to remove br0 before br0.10, which will mean that br0.10 is already gone when we try to remove it. Therefore, make sure that we generate the full dependency graph on every iteration. Also, get rid of the need to keep on-disk state for VETH pairs, and use the name as a descriminator for which side to create/delete.
17 tasks
wkz
added a commit
that referenced
this issue
Feb 11, 2025
Fix #938 Before this change, interface dependencies were only setup when interfaces were created. This led to problems in flows like this: 1. configure set interface br0 set interface br0.10 leave 2. configure set interface dummy0 leave 2. configure no interface br0 no interface br0.10 leave Since neither br0 nor br0.10 was created in (2), no dependencies were setup. Because of that, when the deletion scripts from generation (2) are generated when entering (3), dagger is free to execute them in any order. This means that it may choose to remove br0 before br0.10, which will mean that br0.10 is already gone when we try to remove it. Therefore, make sure that we generate the full dependency graph on every iteration. Also, get rid of the need to keep on-disk state for VETH pairs, and use the name as a descriminator for which side to create/delete.
wkz
added a commit
that referenced
this issue
Feb 11, 2025
Fix #938 Before this change, interface dependencies were only setup when interfaces were created. This led to problems in flows like this: 1. configure set interface br0 set interface br0.10 leave 2. configure set interface dummy0 leave 2. configure no interface br0 no interface br0.10 leave Since neither br0 nor br0.10 was created in (2), no dependencies were setup. Because of that, when the deletion scripts from generation (2) are generated when entering (3), dagger is free to execute them in any order. This means that it may choose to remove br0 before br0.10, which will mean that br0.10 is already gone when we try to remove it. Therefore, make sure that we generate the full dependency graph on every iteration. Also, get rid of the need to keep on-disk state for VETH pairs, and use the name as a descriminator for which side to create/delete.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Current Behavior
Running following test (on update-kernel branch for kernel 6.12.13)
resulting in confd crashing:
This is because dagger has lost the track of dependencies from previous generations (br-Q.40 should depend on br-Q):
Expected Behavior
No crash.
Steps To Reproduce
No response
Additional information
No response
The text was updated successfully, but these errors were encountered: