Skip to content

[test](regression) Add warmup mixed-mode coverage and debug observabi…#65153

Open
pingchunzhang wants to merge 3 commits into
apache:masterfrom
pingchunzhang:master
Open

[test](regression) Add warmup mixed-mode coverage and debug observabi…#65153
pingchunzhang wants to merge 3 commits into
apache:masterfrom
pingchunzhang:master

Conversation

@pingchunzhang

Copy link
Copy Markdown
Contributor

…lity

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Add FE-side warmup diagnostics for lock blocking, periodic reschedule, and VCG-driven reconciliation paths, and add docker regression coverage for mixed warmup/VCG concurrency, conflict, failover, restart, and queue semantics. This makes the new warmup rules observable and gives regression coverage for the main mixed-mode scenarios without bringing markdown or generated artifacts into the commit.

Release note

None

Check List (For Author)

  • Test: No need to test (user explicitly asked not to run FE UT/regression in this round)
  • Behavior changed: Yes (adds FE debug observability and new regression coverage)
  • Does this need documentation: No

What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary:

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

…lity

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Add FE-side warmup diagnostics for lock blocking, periodic reschedule, and VCG-driven reconciliation paths, and add docker regression coverage for mixed warmup/VCG concurrency, conflict, failover, restart, and queue semantics. This makes the new warmup rules observable and gives regression coverage for the main mixed-mode scenarios without bringing markdown or generated artifacts into the commit.

### Release note

None

### Check List (For Author)

- Test: No need to test (user explicitly asked not to run FE UT/regression in this round)
- Behavior changed: Yes (adds FE debug observability and new regression coverage)
- Does this need documentation: No
@pingchunzhang pingchunzhang requested a review from gavinchou as a code owner July 2, 2026 07:55
@hello-stephen

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@pingchunzhang

Copy link
Copy Markdown
Contributor Author

/review

gavinchou
gavinchou previously approved these changes Jul 2, 2026
@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

PR approved by at least one committer and no changes requested.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

PR approved by anyone and no changes requested.

+ "createdPeriodicJobId={} createdEventJobId={} oldJobIds={}",
virtualGroupInFe.getName(), srcCg, dstCg, jobIdPeriodic, jobIdEvent, jobIdsInMs);
LOG.info("virtual compute group {}, generate new jobIds periodic={}, event={}, and old jobIds {}",
virtualGroupInFe, jobIdPeriodic, jobIdEvent, jobIdsInMs);

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.

merge this two logs

+ "failureReason={}",
virtualGroupInFe.getName(), srcCg, dstCg, jobIdsInMs, e.getMessage(), e);
LOG.warn("virtual compute err, name: {}, failed to generate file cache warm up jobs: {}",
virtualGroupInFe.getName(), e.getMessage(), e);

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.

same

+ "subComputeGroups={} matchedJobIds={} cancelReason={}",
virtualComputeGroupName, activeComputeGroup, standbyComputeGroup,
subComputeGroups, matchedJobIds, cancelReason);
}

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.

remove this codes

public boolean tryRegisterRunningJob(CloudWarmUpJob job) {
if (job.isEventDriven()) {
// Event-driven jobs do not require registration, always allow
LOG.info("warmup-lock register-skip jobId={} srcCluster={} dstCluster={} syncMode={} jobType={} "

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.

use debug level

LOG.info("Job {} skipped: waiting for job {} to finish on destination cluster {}",
jobId, existingJobId, clusterName);
if (success) {
LOG.info("warmup-lock register jobId={} srcCluster={} dstCluster={} syncMode={} jobType={} "

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.

use debug level

jobId, job.getSrcClusterName(), clusterName, job.getSyncMode(), job.getJobType(),
existingJobId, "success");
} else {
LOG.debug("warmup-lock register jobId={} srcCluster={} dstCluster={} syncMode={} jobType={} "

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.

use info level

private boolean deregisterRunningJob(CloudWarmUpJob job) {
if (job.isEventDriven()) {
// Event-driven jobs are not registered, so nothing to deregister
LOG.info("warmup-lock deregister-skip jobId={} srcCluster={} dstCluster={} syncMode={} jobType={} "

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.

debug

if (!affectedJobIds.isEmpty()) {
LOG.info("warmup-system-cancel triggerType=CLUSTER_CHANGE clusterName={} affectedJobIds={} reason={}",
clusterName, affectedJobIds, reason);
}

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.

useless code. remove

### What problem does this PR solve?

Issue Number: close apache#65153

Related PR: apache#65153

Problem Summary: The PR review pointed out duplicate warmup rebuild logs, redundant pre-scan logging before cancellation, and noisy log levels in warmup job registration. This change keeps the structured rebuild logs, removes redundant pre-scan log-only loops, and adjusts warmup lock logs to the requested debug/info levels.

### Release note

None

### Check List (For Author)

- Test: FE checkstyle

    - mvn checkstyle:check -pl fe-core

- Behavior changed: No

- Does this need documentation: No
@github-actions github-actions Bot removed the approved Indicates a PR has been approved by one committer. label Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants