[fix](test) skip test_flight_record when the frontend is not on the regression runner - #65933
Merged
924060929 merged 1 commit intoJul 23, 2026
Conversation
Contributor
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
…egression runner flightRecord starts the java flight recorder by running `jps` and `jcmd` on the machine that executes the regression suite, so test_flight_record only works when the frontend and the regression runner are deployed together. The case never verified that precondition, so on a runner without a local frontend it failed with `IllegalStateException: Can not found process: DorisFE` and got reported as a product failure. Check the precondition in the case and return early when the frontend is not running on this machine, the same way the case already skips on jdk below 17. FlightRecordAction is left as is: once the action is really invoked, failing loudly is the right behavior.
924060929
force-pushed
the
fix_flight_record_skip_when_fe_not_local
branch
from
July 23, 2026 01:43
7505ee9 to
2ac22e2
Compare
Contributor
Author
|
run buildall |
Contributor
Author
|
/review |
Contributor
There was a problem hiding this comment.
Automated review status: completed in 2 convergence rounds.
One P2 test-correctness issue is reported inline.
Critical checkpoint conclusions:
- Goal and test proof: the basic no-local-
DorisFEbranch now skips, but the new predicate does not prove that the configured FE is the JVM that will be recorded and queried. The PR's reported present/absent manual runs do not cover that identity mismatch. - Scope and clarity: the patch is small and test-only; the inline issue is limited to the correctness of the new eligibility gate.
- Concurrency and lifecycle: no shared-state concurrency or lock behavior is added. The full
jps-> PID lookup -> JFR start -> loopback SQL -> JFR stop -> parse/callback -> cleanup path was reviewed, including multiple local FEs, external-process races, and error returns. - Configuration and compatibility: no configuration item, protocol/storage format, persistence, transaction, data-write, or FE-BE variable path is changed.
- Parallel and conditional paths: local single-FE, absent/remote FE, unrelated or multiple local FEs, unavailable/failing tools, action failures, and cleanup were checked. The target-identity mismatch is the only substantiated patch-scoped issue.
- Tests and results: no result file changes. The author reports manual found/not-found regression runs; no build or test was run by this reviewer because the review runner contract prohibits builds.
- Observability and performance: skip logging is adequate for the intended branch, and one extra
jpsprocess is negligible for this demo suite. - User focus: no additional review focus was supplied.
All changed files and candidates were swept after convergence; no unresolved or duplicate point remains outside the inline comment.
morrySnow
approved these changes
Jul 23, 2026
Contributor
|
PR approved by at least one committer and no changes requested. |
Contributor
|
PR approved by anyone and no changes requested. |
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 23, 2026
…egression runner (#65933) Problem Summary: `flightRecord` starts the java flight recorder by running `jps` and `jcmd` **on the machine that executes the regression suite**, so `demo_p0/test_flight_record` only works when the frontend and the regression runner are deployed together, e.g. a local development cluster. The case never verified that precondition. On a runner without a local frontend the case failed with ``` java.lang.IllegalStateException: Can not found process: DorisFE at .../demo_p0/test_flight_record.groovy:30 ``` and was reported as a product failure, although nothing was wrong with the product. This PR checks the precondition in the case and returns early when the frontend is not running on this machine, the same way the case already skips on jdk below 17: ```groovy String feProcessName = "DorisFE" boolean feOnThisMachine = false try { feOnThisMachine = "jps".execute().text.readLines().any { it.contains(feProcessName) } } catch (Throwable t) { logger.info("Can not execute jps: ${t.getMessage()}") } if (!feOnThisMachine) { logger.info("Process ${feProcessName} is not running on this machine, ... skip test") return } ``` `FlightRecordAction` is deliberately left untouched: once the action is really invoked, failing loudly is the right behavior, the precondition belongs to the case. The rest of the case is kept as is, it still demonstrates the `flightRecord` api. ### Release note None ### Check List (For Author) - Test - [x] Manual test (add detailed scripts or steps below) Ran the real regression harness against a local cluster (jdk17), with `sh run-regression-test.sh --run -d demo_p0 -s test_flight_record -g nonConcurrent`. The "frontend not here" case is simulated by pointing the probed process name at a name that does not exist, which is what the action sees when the frontend is on another machine. | | frontend process | result | |---|---|---| | before this PR | not found | `java.lang.IllegalStateException: Can not found process: ...`, `failed 1 suites` | | after this PR | not found | `Process ... is not running on this machine, ... skip test`, `failed 0 suites` | | after this PR | found | `JFR.start` / 11x `select 100` / `JFR.stop` / parse ok, `allocation bytes: 2348624`, `.jfr` cleaned up, `failed 0 suites` |
github-actions Bot
pushed a commit
that referenced
this pull request
Jul 23, 2026
…egression runner (#65933) Problem Summary: `flightRecord` starts the java flight recorder by running `jps` and `jcmd` **on the machine that executes the regression suite**, so `demo_p0/test_flight_record` only works when the frontend and the regression runner are deployed together, e.g. a local development cluster. The case never verified that precondition. On a runner without a local frontend the case failed with ``` java.lang.IllegalStateException: Can not found process: DorisFE at .../demo_p0/test_flight_record.groovy:30 ``` and was reported as a product failure, although nothing was wrong with the product. This PR checks the precondition in the case and returns early when the frontend is not running on this machine, the same way the case already skips on jdk below 17: ```groovy String feProcessName = "DorisFE" boolean feOnThisMachine = false try { feOnThisMachine = "jps".execute().text.readLines().any { it.contains(feProcessName) } } catch (Throwable t) { logger.info("Can not execute jps: ${t.getMessage()}") } if (!feOnThisMachine) { logger.info("Process ${feProcessName} is not running on this machine, ... skip test") return } ``` `FlightRecordAction` is deliberately left untouched: once the action is really invoked, failing loudly is the right behavior, the precondition belongs to the case. The rest of the case is kept as is, it still demonstrates the `flightRecord` api. ### Release note None ### Check List (For Author) - Test - [x] Manual test (add detailed scripts or steps below) Ran the real regression harness against a local cluster (jdk17), with `sh run-regression-test.sh --run -d demo_p0 -s test_flight_record -g nonConcurrent`. The "frontend not here" case is simulated by pointing the probed process name at a name that does not exist, which is what the action sees when the frontend is on another machine. | | frontend process | result | |---|---|---| | before this PR | not found | `java.lang.IllegalStateException: Can not found process: ...`, `failed 1 suites` | | after this PR | not found | `Process ... is not running on this machine, ... skip test`, `failed 0 suites` | | after this PR | found | `JFR.start` / 11x `select 100` / `JFR.stop` / parse ok, `allocation bytes: 2348624`, `.jfr` cleaned up, `failed 0 suites` |
0AyanamiRei
pushed a commit
to 0AyanamiRei/doris
that referenced
this pull request
Jul 27, 2026
…egression runner (apache#65933) Problem Summary: `flightRecord` starts the java flight recorder by running `jps` and `jcmd` **on the machine that executes the regression suite**, so `demo_p0/test_flight_record` only works when the frontend and the regression runner are deployed together, e.g. a local development cluster. The case never verified that precondition. On a runner without a local frontend the case failed with ``` java.lang.IllegalStateException: Can not found process: DorisFE at .../demo_p0/test_flight_record.groovy:30 ``` and was reported as a product failure, although nothing was wrong with the product. This PR checks the precondition in the case and returns early when the frontend is not running on this machine, the same way the case already skips on jdk below 17: ```groovy String feProcessName = "DorisFE" boolean feOnThisMachine = false try { feOnThisMachine = "jps".execute().text.readLines().any { it.contains(feProcessName) } } catch (Throwable t) { logger.info("Can not execute jps: ${t.getMessage()}") } if (!feOnThisMachine) { logger.info("Process ${feProcessName} is not running on this machine, ... skip test") return } ``` `FlightRecordAction` is deliberately left untouched: once the action is really invoked, failing loudly is the right behavior, the precondition belongs to the case. The rest of the case is kept as is, it still demonstrates the `flightRecord` api. ### Release note None ### Check List (For Author) - Test - [x] Manual test (add detailed scripts or steps below) Ran the real regression harness against a local cluster (jdk17), with `sh run-regression-test.sh --run -d demo_p0 -s test_flight_record -g nonConcurrent`. The "frontend not here" case is simulated by pointing the probed process name at a name that does not exist, which is what the action sees when the frontend is on another machine. | | frontend process | result | |---|---|---| | before this PR | not found | `java.lang.IllegalStateException: Can not found process: ...`, `failed 1 suites` | | after this PR | not found | `Process ... is not running on this machine, ... skip test`, `failed 0 suites` | | after this PR | found | `JFR.start` / 11x `select 100` / `JFR.stop` / parse ok, `allocation bytes: 2348624`, `.jfr` cleaned up, `failed 0 suites` |
924060929
added a commit
that referenced
this pull request
Jul 28, 2026
…egression runner (#65933) Problem Summary: `flightRecord` starts the java flight recorder by running `jps` and `jcmd` **on the machine that executes the regression suite**, so `demo_p0/test_flight_record` only works when the frontend and the regression runner are deployed together, e.g. a local development cluster. The case never verified that precondition. On a runner without a local frontend the case failed with ``` java.lang.IllegalStateException: Can not found process: DorisFE at .../demo_p0/test_flight_record.groovy:30 ``` and was reported as a product failure, although nothing was wrong with the product. This PR checks the precondition in the case and returns early when the frontend is not running on this machine, the same way the case already skips on jdk below 17: ```groovy String feProcessName = "DorisFE" boolean feOnThisMachine = false try { feOnThisMachine = "jps".execute().text.readLines().any { it.contains(feProcessName) } } catch (Throwable t) { logger.info("Can not execute jps: ${t.getMessage()}") } if (!feOnThisMachine) { logger.info("Process ${feProcessName} is not running on this machine, ... skip test") return } ``` `FlightRecordAction` is deliberately left untouched: once the action is really invoked, failing loudly is the right behavior, the precondition belongs to the case. The rest of the case is kept as is, it still demonstrates the `flightRecord` api. ### Release note None ### Check List (For Author) - Test - [x] Manual test (add detailed scripts or steps below) Ran the real regression harness against a local cluster (jdk17), with `sh run-regression-test.sh --run -d demo_p0 -s test_flight_record -g nonConcurrent`. The "frontend not here" case is simulated by pointing the probed process name at a name that does not exist, which is what the action sees when the frontend is on another machine. | | frontend process | result | |---|---|---| | before this PR | not found | `java.lang.IllegalStateException: Can not found process: ...`, `failed 1 suites` | | after this PR | not found | `Process ... is not running on this machine, ... skip test`, `failed 0 suites` | | after this PR | found | `JFR.start` / 11x `select 100` / `JFR.stop` / parse ok, `allocation bytes: 2348624`, `.jfr` cleaned up, `failed 0 suites` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What problem does this PR solve?
Problem Summary:
flightRecordstarts the java flight recorder by runningjpsandjcmdon the machine thatexecutes the regression suite, so
demo_p0/test_flight_recordonly works when the frontend andthe regression runner are deployed together, e.g. a local development cluster. The case never
verified that precondition.
On a runner without a local frontend the case failed with
and was reported as a product failure, although nothing was wrong with the product.
This PR checks the precondition in the case and returns early when the frontend is not running on
this machine, the same way the case already skips on jdk below 17:
FlightRecordActionis deliberately left untouched: once the action is really invoked, failingloudly is the right behavior, the precondition belongs to the case. The rest of the case is kept
as is, it still demonstrates the
flightRecordapi.Release note
None
Check List (For Author)
Test
Ran the real regression harness against a local cluster (jdk17), with
sh run-regression-test.sh --run -d demo_p0 -s test_flight_record -g nonConcurrent.The "frontend not here" case is simulated by pointing the probed process name at a name that
does not exist, which is what the action sees when the frontend is on another machine.
java.lang.IllegalStateException: Can not found process: ...,failed 1 suitesProcess ... is not running on this machine, ... skip test,failed 0 suitesJFR.start/ 11xselect 100/JFR.stop/ parse ok,allocation bytes: 2348624,.jfrcleaned up,failed 0 suitesBehavior changed:
demo_p0/test_flight_recordnow skips itself when no local frontend process is found,instead of failing. Regression test only, no product behavior change.
Does this need documentation?