Skip to content

Fix "Launching a component with a missing binary can sometimes succeed" (#261)#262

Merged
pawelrutkaq merged 2 commits into
eclipse-score:mainfrom
etas-contrib:feature/fix-missing-binary-failure
Jun 29, 2026
Merged

Fix "Launching a component with a missing binary can sometimes succeed" (#261)#262
pawelrutkaq merged 2 commits into
eclipse-score:mainfrom
etas-contrib:feature/fix-missing-binary-failure

Conversation

@WilliamRoebuck

Copy link
Copy Markdown
Contributor
  • Added a test to reproduce the failure
  • Corrected the error path if a node is not enqueued. Previously this would have incorrectly reported a success. With the fix, we need to report the failure to prevent the graph getting stuck in a transition.

Fixes #261

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.4.2) and connecting to it...
INFO: Invocation ID: 89119766-6ee5-47e0-9ce6-dc79a21a5e03
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (30 packages loaded, 10 targets configured)

Analyzing: target //:license-check (85 packages loaded, 10 targets configured)

Analyzing: target //:license-check (86 packages loaded, 10 targets configured)

Analyzing: target //:license-check (138 packages loaded, 2720 targets configured)

Analyzing: target //:license-check (150 packages loaded, 5404 targets configured)

Analyzing: target //:license-check (150 packages loaded, 5404 targets configured)

Analyzing: target //:license-check (155 packages loaded, 5451 targets configured)

Analyzing: target //:license-check (155 packages loaded, 5453 targets configured)

Analyzing: target //:license-check (158 packages loaded, 7340 targets configured)

Analyzing: target //:license-check (161 packages loaded, 10134 targets configured)

Analyzing: target //:license-check (162 packages loaded, 10142 targets configured)

Analyzing: target //:license-check (162 packages loaded, 10142 targets configured)

Analyzing: target //:license-check (162 packages loaded, 10142 targets configured)

INFO: Analyzed target //:license-check (163 packages loaded, 10268 targets configured).
[14 / 16] [Prepa] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar
[15 / 16] Building license.check.license_check.jar (); 0s disk-cache, multiplex-worker
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 28.649s, Critical Path: 2.51s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions

Copy link
Copy Markdown

The created documentation from the pull request is available at: docu-html

markNodeInFlight(); // This will be decremented below, avoid it going negative
// Also, we need to be careful not to recurse or deadlock here. The below function does not lock any mutex
// nor call this function
handleNonTransitionExecution(GraphState::kAborting);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This code looks strange for error handling (whole else, especially markNodeInFlight (same as in positive case)). Can you either in commit elaborate on exact issue ?

@WilliamRoebuck WilliamRoebuck Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

With the change on line 181, the graph would remain in kInTransition (rather than incorrectly reporting kSuccess) in this case. We call handleNonTransitionExecution to react to this the same way we would if a process failed to start for example. This takes us to aborting and then the undefined state, triggering a recovery action. markNodeInFlight() is to pass the check on line 391, but it might make sense to move that check out of the function anyway

@pawelrutkaq pawelrutkaq merged commit e22d2ab into eclipse-score:main Jun 29, 2026
19 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in LCM - Lifecycle & Health FT Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Launching a component with a missing binary can sometimes succeed

3 participants