Skip to content

chore: use solo node instead of local node (#5060)#5234

Open
jasuwienas wants to merge 7 commits intomainfrom
5060-use-solo-instead-of-local-node
Open

chore: use solo node instead of local node (#5060)#5234
jasuwienas wants to merge 7 commits intomainfrom
5060-use-solo-instead-of-local-node

Conversation

@jasuwienas
Copy link
Copy Markdown
Contributor

@jasuwienas jasuwienas commented Apr 9, 2026

Description

Replaces hedera local node with hiero solo node.

Updates the CN and MN versions and fixes the tests to work correctly with them:

  • Gas limit changes are required because the gas limit is now dependent on the CN version. For CN versions below 0.69, it differed from the version we switched to (0.72.0). It applies to conformity tests and debug tests.
  • Two tests (api_batch1) that depended on the transaction failing were written in a way that caused them to fail due to gas limits. I’ve updated them to fail with a wrong_nonce error instead, so they no longer depend on a configurable or changeable value.
  • We had an incorrect assumption that logs emitted by a transaction would always include a fragment field. After updating the MN (change between 0.144.0 and v0.151.0) and CN versions, additional logs for token transfers were introduced, which caused tests related to token operations to fail. I’ve updated the tests to correctly handle this case, expecting correct object interface.
  • MN no longer support long zero address flag. All the tests which depended on it are no longer executable.

Related issue(s)

Fixes #5060

Testing Guide

  1. Run the tests
  2. Make sure they pass...

Changes from original design (optional)

Additional work needed (optional)

N/A

Checklist

  • I've assigned an assignee to this PR and related issue(s) (if applicable)
  • I've assigned a label to this PR and related issue(s) (if applicable)
  • I've assigned a milestone to this PR and related issue(s) (if applicable)
  • I've updated documentation (code comments, README, etc. if applicable)
  • I've done sufficient testing (unit, integration, etc.)

@jasuwienas jasuwienas added this to the 0.77.0 milestone Apr 9, 2026
@jasuwienas jasuwienas self-assigned this Apr 9, 2026
@jasuwienas jasuwienas added enhancement New feature or request github_actions Pull requests that update Github Actions code. labels Apr 9, 2026
@jasuwienas jasuwienas requested review from a team as code owners April 9, 2026 10:04
@codacy-production
Copy link
Copy Markdown

codacy-production bot commented Apr 9, 2026

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics -6 complexity · -6 duplication

Metric Results
Complexity -6
Duplication -6

View in Codacy

TIP This summary will be updated as you push new changes. Give us feedback

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 9, 2026

Test Results

0 tests  ±0   0 ✅ ±0   0s ⏱️ ±0s
0 suites ±0   0 💤 ±0 
0 files   ±0   0 ❌ ±0 

Results for commit 048b42d. ± Comparison against base commit efb14b5.

♻️ This comment has been updated with latest results.

Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Copy link
Copy Markdown
Contributor

@quiet-node quiet-node left a comment

Choose a reason for hiding this comment

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

Thanks for taking on the challenge of upgrading the versions! I’ve done it once so I know how tough it can be. Great work! Left some Qs and concerns

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.

So this script works around Solo's port-forwarding, but hiero-ledger/solo#3833 was fixed and seems like it still failed? I think if there's still a bug specifically with falcon deploy, we should file it on solo repo so it gets fixed upstream, rather than a workaround to fix at the consumer level like this. Or maybe we can go with this workaround now, create a ticket on Solo, then add a TODO here to track. If it's fixed upstream, it can avoid unnecessary complexity for our CI.

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.

I’ll update the description to better clarify what’s currently missing in the solo implementation.

What I'm actually missing in solo is flag like:

  • --external-address

so I can bind solo to the address: --address 0.0.0.0

Also, I believe it was your suggestion to remove HAProxy and call the underlying services directly.

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.

If you know any workaround for that let me know please. I'm keeping it as is for now, since some of the tests (dapp for example) require the port to be available from the container level as well, not only on the localhost.

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.

Thanks for updating the description. It's much clearer now. Would it make sense to file a ticket on the Solo repo for the missing --external-address flag, or any issue, and add # TODO(solo#XXXX) comments at the top of this script? That way we have a clear path to remove this workaround once it's fixed upstream.


- name: Start the solo node
run: |
npx @hashgraph/solo@${{ inputs.soloVersion || '0.68.0' }} one-shot falcon deploy \
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.

It looks like soloVersion isn't defined as an input in the workflow_call section. This means the || '0.68.0' fallback will always be used and callers like manual-testing.yml can't override it. Should we add soloVersion as a proper input to all the reusable workflows?

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.

With this update, the networkTag and mirrorTag will no longer be used (here and in other workflows)

I think a nice way to handle this is to add a new setup-value-file step. This step can load the default falcon.yml, then dynamically loads the networkTag and mirrorTag. That way, anyone who still wants to run the test using specific tags can continue to do so.

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.

Also about the flags,

  • Falcon alreayd have --force-port-forward set to true, right? I think we don't need to set it explicitly. In fact, should we make --force-port-forward=false as we have our own portforward setup anyway?
  • We should add --deploy-explorer=false to save time

Copy link
Copy Markdown
Contributor Author

@jasuwienas jasuwienas Apr 10, 2026

Choose a reason for hiding this comment

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

Yes, right, we have to create the config file dynamically (and nice idea with the explorer, we DON'T need it)

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.

Thanks for addressing these other two. A few things I noticed about the flags:

  1. The dynamically generated falcon.yml still has --force-port-forward: true under consensusNode in all workflows. Since we have our own port-forward script, should we remove this or set it to false?

  2. dapp.yml is missing --deploy-explorer=false that the other workflows have.

  3. In subgraph.yml, the CLI has --force-port-forward=false but the config file has --force-port-forward: true. These might conflict.

Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
Signed-off-by: Mariusz Jasuwienas <jasuwienas@gmail.com>
@jasuwienas jasuwienas requested a review from quiet-node April 10, 2026 11:17
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 10, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@           Coverage Diff           @@
##             main    #5234   +/-   ##
=======================================
  Coverage   95.93%   95.93%           
=======================================
  Files         146      146           
  Lines       25140    25182   +42     
  Branches     2044     2046    +2     
=======================================
+ Hits        24117    24159   +42     
  Misses       1001     1001           
  Partials       22       22           

see 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@quiet-node quiet-node left a comment

Choose a reason for hiding this comment

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

Looking great left some extra item on the new updates

run: .github/scripts/forward-ports.sh

- name: Start Redis
run: docker run -d --name redis -p 6379:6379 redis:7-alpine
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.

Nice one! However it looks like there are still a couple of leftover local-node commands at line 129 and 132. Let's remove them


- name: Start the solo node
run: |
npx @hashgraph/solo@${{ inputs.soloVersion || '0.68.0' }} one-shot falcon deploy \
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.

Thanks for addressing these other two. A few things I noticed about the flags:

  1. The dynamically generated falcon.yml still has --force-port-forward: true under consensusNode in all workflows. Since we have our own port-forward script, should we remove this or set it to false?

  2. dapp.yml is missing --deploy-explorer=false that the other workflows have.

  3. In subgraph.yml, the CLI has --force-port-forward=false but the config file has --force-port-forward: true. These might conflict.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request github_actions Pull requests that update Github Actions code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[A5 SOLO] Migrate Hiero Local Node to Solo (Once metrics are equivalent)

2 participants