Skip to content

ci(framework): bound linux workers and retain test diagnostics - #7024

Closed
317787106 wants to merge 4 commits into
tronprotocol:release_v4.8.3from
317787106:ci/release-v4.8.3-test-worker-diagnostics
Closed

317787106 wants to merge 4 commits into
tronprotocol:release_v4.8.3from
317787106:ci/release-v4.8.3-test-worker-diagnostics

Conversation

@317787106

@317787106 317787106 commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

What does this PR do?

Limits the Ubuntu ARM64 and Rocky Linux PR build/test commands to two Gradle workers, with --rerun-tasks --info --stacktrace. The rerun option forces scheduled tasks, including tests and their dependencies, to execute on each validation run instead of reusing up-to-date or cached task outputs. This also applies to Rocky Linux's separate RocksDB test command. Dependency downloads remain cached. All build jobs retain their 60-minute timeout; macOS and Debian keep their existing commands for comparison.

Framework test JVMs running under CI=true write fatal-error reports to the task's temporary directory. A shared failure-only action uploads test results, HTML reports, test application logs, and hs_err_pid*.log files, and prints available memory, process limits, and cgroup memory counters. Diagnostic artifacts have a seven-day retention period and a pinned upload-artifact version.

Fixes a demonstrated race in ComputeRewardTest.query(): after the initial reward query succeeds, the test shuts down the reward executor and asserts that it terminates within 10 seconds before mutating or closing its store. The existing reward and expected-error assertions remain in place.

Why are these changes required?

In #7018, the Ubuntu test worker exited with code 1 and the Rocky Linux test worker exited with code 134. All 34 Keccak tests passed in both jobs, but the available logs did not establish the process-exit cause. This draft tests whether lower concurrency improves stability and preserves evidence for the next failure. It does not claim that an OOM has been confirmed or fixed.

Related runs: Ubuntu, Rocky Linux.

The Debian failure in this PR exposed a concrete exit-code-1 cause: the test closed RewardViStore while the background task was still calculating its Merkle root. The resulting DBException: Closed reached ExitManager and triggered System.exit(1), even though the test's synchronous assertion passed. Awaiting executor termination removes that race so CI can continue investigating the separate, still-unexplained exit code 134.

This PR has been tested by:

  • Before the reward-test fix, JDK 17 / ARM64: CI=true ./gradlew checkstyleMain checkstyleTest test --no-daemon --max-workers=2 passed in 17m 35s (3,982 tests passed, 30 skipped; no failures/errors). Validation used a regular clone with identical changed files because the repository's Git-properties plugin cannot read a linked worktree.
  • actionlint 1.7.12 passed for pr-build.yml; composite-action YAML and shell syntax checks passed.
  • Checked that all four build jobs retain timeout-minutes: 60 and only Ubuntu/Rocky Linux receive the worker cap.
  • Verified the real framework test JVM receives the error-file argument, and that the worktree and validation clone contain identical changed files.
  • Semgrep completed with no new findings; the 20 existing mutable action-tag findings in the workflow are unchanged.
  • git diff --check passed.
  • The initial CI run at 99741d687c passed with real framework test execution on Ubuntu and Rocky Linux; the complete jobs took 14m 35s and 28m 43s, respectively. Ubuntu's second attempt reported :framework:test FROM-CACHE, so repeated green runs alone were insufficient stability evidence. The added --rerun-tasks option makes subsequent runs execute the tests again.
  • For the command update, actionlint, timeout/command assertions, and Gradle dry-run passed. The local Checkstyle/test command also succeeded in 21s with existing results UP-TO-DATE; this was not a fresh test execution. The new Linux CI run will validate forced execution and elapsed time.
  • The reward-test fix passed three independent JDK 17 / ARM64 executions with test-result reuse, build cache, and automatic test retries disabled. Checkstyle passed; Semgrep reported zero findings for the changed test. The full local suite was stopped at the user's request; it is not claimed as passed for this fix.
  • After merging the fix with the diagnostic configuration, Checkstyle and a fresh focused ComputeRewardTest.query run passed in 38s, again with test-result reuse, build cache, and automatic test retries disabled. actionlint and merge diff checks also passed.

Follow up

Continue CI validation for exit code 134, including Rocky Linux's additional RocksDB tests, within the unchanged one-hour limit. Use the diagnostic artifacts to identify the failing native/JVM path if it recurs. The demonstrated test-race fix explains the captured Debian exit code 1; it does not establish the cause of the earlier exit code 134.

Extra details

Based on the local release_v4.8.3 commit 7ebc2eb1f5cbd66ee7763adf489a9ab2227a0d66. This is an independent CI experiment; it does not include #7018's unmerged Keccak changes. The Gradle build JVM settings and the framework test JVM's 512 MB heap limit are preserved. The reward-test fix is merged from fix/compute-reward-test-race (ccba12aa72).

@github-actions
github-actions Bot requested a review from xxo1shine October 12, 2026 14:24
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.

1 participant