Skip to content

[Fix-18672][UI] Allow SeaTunnel workflow tasks to select stream execution - #18673

Open
sunlishuo25 wants to merge 17 commits into
apache:devfrom
sunlishuo25:Fix-18672
Open

sunlishuo25 wants to merge 17 commits into
apache:devfrom
sunlishuo25:Fix-18672

Conversation

@sunlishuo25

@sunlishuo25 sunlishuo25 commented Oct 3, 2026 •

Copy link
Copy Markdown

Was this PR generated or assisted by AI?

YES. Code investigation, implementation, regression tests, documentation, and this description were assisted by OpenAI Codex. Local checks and their limitations are reported below.

Purpose of the pull request

Fixes #18672.

A SeaTunnel workflow node always defaults to taskExecuteType=BATCH, even when its SeaTunnel configuration runs a streaming job, and the form has no way to select Stream Task. Add an explicit Batch/Stream choice using the existing execution-type field so an opted-in workflow task can appear in the Stream Task instance list. Batch remains the default, including for existing definitions without an execution type.

The choice is independent of the SeaTunnel configuration, supporting both custom scripts and resource files without trying to parse HOCON in the browser. Users must also select the matching SeaTunnel job mode and use attached submission.

Brief change log

  • Add the SeaTunnel execution-type selector and preserve it during form initialization/save/reload.
  • Carry each task's execution type through DAG construction, editing and copying, including connected-edge styling and legacy defaults.
  • Disable SeaTunnel's unsupported savepoint action in the stream instance table.
  • Add a focused Selenium regression using the existing E2E framework, register it in the E2E CI matrix, and add English/Chinese usage guidance.

Verify this pull request

  • Passed: UI ESLint, vue-tsc --noEmit, and pnpm run build:prod using the checked-in lockfile.
  • Passed: ./mvnw spotless:apply spotless:check with JDK 11.
  • Passed: ./mvnw -f dolphinscheduler-e2e/pom.xml -pl dolphinscheduler-e2e-case -am test-compile.
  • Additional local source-level checks (16/16 passed; the unmodified baseline passes 6/16) execute the real form schema, radio renderer, serialization, form restoration, and DAG/edit code with unrelated UI services mocked. They cover raw/resource configurations, Batch defaults, Stream persistence, legacy definitions, editing and copying. These diagnostics are separate from the committed Selenium test.
  • Passed in an isolated browser fixture using the real Vue field/table renderers: raw/resource Stream selection survives save/reopen, English/Chinese labels render, SeaTunnel savepoint is disabled and clicking it triggers no API call, while Flink savepoint remains enabled. This is not a full application E2E test.
  • Passed in an isolated existing 3.3.2 binary with H2: create and publish a workflow containing a SEATUNNEL task marked STREAM, run it through the workflow, observe RUNNING_EXECUTION, confirm inclusion in STREAM pagination and exclusion from BATCH pagination, and independently query H2 after shutdown to confirm STREAM persisted on both the definition and instance. A fake attached CLI was used to isolate scheduler behavior; this does not test a real SeaTunnel engine or a backend built from this commit. Stop verification was inconclusive because the Mac lacks pstree (the API accepted the request but the process remained running).
  • Attempted: ./mvnw -f dolphinscheduler-e2e/pom.xml -pl dolphinscheduler-e2e-case -am -Dtest=WorkflowSeaTunnelE2ETest -Dsurefire.failIfNoSpecifiedTests=false -Dm1_chip=true test. The initial local Testcontainers run failed during setup because no valid Docker environment was available, before test assertions ran.

Upstream E2E attempt 2 passed Batch save/reopen, then the modal footer intercepted the first Stream radio click. The follow-up scrolls the radio label into view, keeps the native Selenium click, and waits for the input to be selected. Focused local Selenium checks using the real modal and radio components passed on Chrome 125 and 149. The isolated Mac fixture did not reproduce the Linux click exception, even at the observed footer overlap; the full upstream E2E rerun remains outstanding. Full upstream CI has not passed.

This change is limited to classification of workflow-managed tasks. It does not restore standalone streaming execution, add detached-job tracking/savepoint/recovery, or fix existing engine-cancellation and cross-workflow streaming-dependency behavior. A live SeaTunnel engine end-to-end run has not been performed.

Pull Request Notice

Pull Request Notice

@boring-cyborg

boring-cyborg Bot commented Oct 3, 2026

Copy link
Copy Markdown

Thanks for opening this pull request! Please check out our contributing guidelines. (https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/en/contribute/join/pull-request.md)

@github-actions github-actions Bot added UI ui and front end related test e2e e2e test document labels Oct 3, 2026
@github-actions github-actions Bot added the CI&CD label Oct 3, 2026
@sunlishuo25
sunlishuo25 marked this pull request as ready for review October 3, 2026 02:31
@sunlishuo25
sunlishuo25 requested a review from SbloodyS as a code owner October 3, 2026 02:31
sunlishuo25 and others added 5 commits October 3, 2026 14:06
Discard the previous task's stored execution mode only when its task type
changes, so the new type uses the existing defaults. Preserve SeaTunnel's
explicit mode when the type is unchanged and when a definition is reopened.

Add focused source checks for task type transitions, mode preservation,
custom/resource configuration round trips, and legacy defaults.
@SbloodyS SbloodyS added the first time contributor First-time contributor label Oct 5, 2026
@SbloodyS SbloodyS added this to the 3.5.0 milestone Oct 6, 2026
@SbloodyS SbloodyS added the bug Something isn't working label Oct 6, 2026

@SbloodyS SbloodyS left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The new E2E covers execution-type selection and save/reload, but leaves several changed paths untested.

Please add regression coverage for copying a STREAM SeaTunnel task, updating connected-edge styling when switching between BATCH and STREAM, and disabling SeaTunnel savepoint while keeping Flink savepoint enabled.

The test also never executes the workflow or checks the Stream Task instance list, so it does not verify the instance-classification outcome described in the PR.

@sunlishuo25

Copy link
Copy Markdown
Author

Thanks for the review, @SbloodyS. Commit f1acc46 now includes regression coverage for STREAM task copying and persistence, connected-edge styling when switching BATCH/STREAM, disabled SeaTunnel savepoint with Flink savepoint preserved, and actual workflow execution followed by Stream/Batch instance-list checks.

Local validation passed all 43 browser checks and the complete WorkflowSeaTunnelE2ETest class. The workflow was actually started, but the SeaTunnel tasks failed because /bin/seatunnel.sh was missing (exit 127). The STREAM classification assertions passed; this does not demonstrate successful SeaTunnel engine execution. Local validation used ARM64 with reduced JVM heap settings.

The tests are in WorkflowSeaTunnelE2ETest.java and dolphinscheduler-ui/tests/task-execution-graph.cjs. The latter is included in the Frontend workflow. All nine upstream pull_request workflows for this head are still awaiting approval with zero jobs executed.

This branch has not been deployed

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

Labels

bug Something isn't working CI&CD document e2e e2e test first time contributor First-time contributor test UI ui and front end related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug][UI] SeaTunnel workflow tasks cannot select stream execution type

2 participants