Skip to content

Fix configuration precedence on replacement#559

Open
doudou wants to merge 3 commits intotransition-to-runkitfrom
fix_configuration_precedence_on_replacement
Open

Fix configuration precedence on replacement#559
doudou wants to merge 3 commits intotransition-to-runkitfrom
fix_configuration_precedence_on_replacement

Conversation

@doudou
Copy link
Copy Markdown
Member

@doudou doudou commented May 8, 2026

@doudou doudou requested review from jhonasiv and wvmcastro May 8, 2026 17:46
@doudou doudou force-pushed the fix_configuration_precedence_on_replacement branch from 7d8f831 to df362a4 Compare May 8, 2026 17:49
…copy_on_replace: true

A few months back I noticed that uring repeated deployments and
reconfigurations, some configuration precedence edges would be lost. I tracked
it to the behaviour of replacements to move relations.

At the time, I added strong: true to the syskit configuration precedence graph.
But this, actually as documented in Roby::Relations::Graph, causes the edges to
be completely ignored during replacements. Definitely not what we want in
Syskit, where replacement is heavily used as a plan transformation tool during
network generation, deployment and adaptation.

In practice, this caused the precedence constraints to be *completely* lost (and
a heisenbug that we studiously ignored). This commit depends on a change in Roby
which allows to copy strong relations (while keeping the
do-not-remove-automatically behaviour of strong relations). Set the flag and
add the relevant regression test
@doudou doudou force-pushed the fix_configuration_precedence_on_replacement branch from df362a4 to 22c8365 Compare May 8, 2026 18:05
Comment thread test/test_component.rb
syskit_stub_configured_deployment(combus_driver_m)
dev_driver = syskit_deploy(dev)
bus_driver = plan.find_tasks(combus_driver_m).with_parent(dev_driver).first
refute dev_driver.meets_configurationg_precedence_constraints?
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity, what happens if syskit_configure(dev_driver) is called? It will be a no-op or some kind of exception will be thrown?

Comment thread test/network_generation/test_engine.rb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants