Skip to content

Commit 6043f08

Browse files
committed
fix: duplicate deployments in the non-lazy but early deployment case
In that case, we need to 'exfiltrate' the used_deployments hash from the network generation step to pass to runtime network adaptation.
1 parent d696e88 commit 6043f08

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

lib/syskit/network_generation/engine.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def initialize(
8989
event_logger: event_logger,
9090
resolution_control: resolution_control
9191
)
92+
@used_deployments = {}
9293
@required_instances = {}
9394
end
9495

@@ -127,10 +128,11 @@ def compute_deployed_network(
127128
resolution_control: @resolution_control
128129
)
129130

130-
@used_deployments, = deployer.deploy(
131+
used_deployments, = deployer.deploy(
131132
error_handler: error_handler, validate: validate_deployed_network,
132133
lazy: lazy_deploy
133134
)
135+
@used_deployments = @used_deployments.merge(used_deployments)
134136
resolution_errors = error_handler.process_failures(
135137
required_instances, cleanup_failed_tasks: true
136138
)
@@ -392,7 +394,7 @@ def compute_system_network(
392394
instance_requirements
393395
)
394396

395-
system_network_generator.resolve_system_network(
397+
_, @used_deployments = system_network_generator.resolve_system_network(
396398
garbage_collect: garbage_collect,
397399
validate_abstract_network: validate_abstract_network,
398400
validate_generated_network: validate_generated_network,

lib/syskit/network_generation/runtime_network_adaptation.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@ def adapt_existing_deployed_task(
470470
task, existing_tasks, existing_deployment_task
471471
)
472472
existing_task = find_current_deployed_task(existing_tasks)
473+
return if task == existing_task
473474

474475
if !existing_task || !task.can_be_deployed_by?(existing_task)
475476
new_task = adapt_existing_create_new(

lib/syskit/network_generation/system_network_generator.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ def resolve_system_network(
268268
validate_deployed_network: true
269269
)
270270
deployment_tasks = {}
271+
@used_deployments = {}
271272
early_deploy(deployment_tasks)
272273

273274
merge_solver.merge_identical_tasks
@@ -322,13 +323,16 @@ def resolve_system_network(
322323
early_deploy? && validate_deployed_network
323324
)
324325
interruption_point("syskit-netgen:validation")
325-
@toplevel_tasks
326+
327+
@used_deployments.transform_keys! { @merge_solver.replacement_for(_1) }
328+
[@toplevel_tasks, @used_deployments]
326329
end
327330

328331
def early_deploy(deployment_tasks)
329332
return unless early_deploy?
330333

331-
deploy(deployment_tasks)
334+
used_deployments, = deploy(deployment_tasks)
335+
@used_deployments.merge!(used_deployments)
332336
interruption_point "syskit-netgen:early-deploy"
333337
end
334338

0 commit comments

Comments
 (0)