goutamadwant opened a new pull request, #12338: URL: https://github.com/apache/seatunnel/pull/12338
### Purpose of this pull request Fix the startup isolation of `RestApiSubmitJobConfigShadeDecryptTest`. This is a standalone test-only change based on `dev`, not on the CDC progress branch. The failure was observed while investigating #11512: [Ubuntu Java 11 unit-test job](https://github.com/goutamadwant/seatunnel/actions/runs/34918501024/job/104221752195). The fixture failed during setup with `Node failed to start!` after approximately 300 seconds, before its REST submission assertions ran. #### Root cause The fixture starts a single Hazelcast member and a Jetty REST service. Its TCP/IP member list contains `127.0.0.1` without an explicit port, allowing discovery to scan nearby ports. In the failing configuration, Hazelcast starts on port `23991` and scans port `24000`, where Jetty is listening. Hazelcast sends its member protocol to an HTTP endpoint, receives EOF, and fails to complete startup. This is a protocol/discovery overlap, not two services trying to bind the same socket. The fixture tests REST submission and configuration decryption; it does not need to discover another cluster member. #### Changes - Disable TCP/IP, multicast, and auto-detection in this fixture's inline Hazelcast configuration. - Remove the unused host-only member list and TCP join-scan property. - Add `testFixtureStartsWithoutDiscovery`, asserting that the fixture has one cluster member and no joiner. - Preserve the existing HOCON, uploaded HOCON, uploaded SQL, missing shade identifier, and invalid Base64 submission cases. Only `RestApiSubmitJobConfigShadeDecryptTest.java` changes. No production discovery configuration, ports, bind ranges, timeouts, retry counts, thread counts, or multi-member E2E fixtures are changed. No dependency is added. #### Related work and scope - #11868 changes this fixture's join scan from 30 to 100 ports. Both scan sizes reproduced the HTTP overlap locally, so widening the scan does not remove this failure path. This PR removes the same property and needs coordination with that hunk; it does not replace the other changes in #11868. - #12298 addresses publication of the dynamically bound REST port. It does not disable discovery in this single-member fixture. - This PR addresses the reproduced REST setup failure seen on #11512. It does not claim to fix the other engine, CDC, or broker failures in that run, and does not replace or close #11512. ### Does this PR introduce _any_ user-facing change? No. This changes one test fixture only. Production behavior and public configuration remain unchanged; no migration is required. ### How was this patch tested? #### Controlled reproduction A bounded diagnostic probe used the project's shaded Hazelcast `5.1-3.0.0` and Jetty `9.4.56.v20240826-3.0.0` with a real HTTP listener. A network listener observed Hazelcast's `HZC` protocol header reaching Jetty. Reproduction setup: use loopback, Hazelcast base port `23991`, bind range `100`, host-only TCP member `127.0.0.1`, and HTTP port `24000`. Use Jetty's 30-second idle timeout and run each case serially with the ports free. - TCP scan count 30: startup failed; the HTTP listener received one connection. - TCP scan count 100: startup failed; the HTTP listener received one connection. - Same overlapping ports, discovery disabled: startup succeeded with one member and zero connections to HTTP. - TCP discovery enabled but HTTP moved outside the scan to `26000`: startup succeeded with zero connections to HTTP. Only the diagnostic probe used a shortened five-second join budget, a one-second operation timeout, and reduced thread pools. The non-overlapping positive control used the same diagnostic bounds, so the short join budget alone does not explain the negative results. None of those diagnostic timing, port, or thread changes are in the patch. These checks establish the failure mechanism, not a startup-performance benchmark. #### Patch verification - `RestApiSubmitJobConfigShadeDecryptTest`: **6 tests passed**, including the new isolation assertion and all existing submission cases. - Unchanged `TaskExecutionServiceTest`: **18 test invocations passed** in the final serial run alongside the REST suite. - Final combined result: **24 tests, zero failures, zero errors, zero skips**. - Targeted engine-server module `verify`, scoped Spotless apply/check, and `git diff --check` passed. Compilation used JDK 21 with the project's Java 8 bytecode target; Surefire forked Java 11.0.19. Required reactor dependencies were already installed locally, including cached SNAPSHOT artifacts. This was not a clean full-reactor build. Equivalent module commands from the repository root, with `JAVA_HOME` pointing to the build JDK and `JAVA11_HOME` pointing to the Java 11 test JDK: ```sh mvn -o -pl seatunnel-engine/seatunnel-engine-server \ -Dskip.ui=true -Dskip.spotless=true \ -Djvm="$JAVA11_HOME/bin/java" \ -Dtest=RestApiSubmitJobConfigShadeDecryptTest verify mvn -o -pl seatunnel-engine/seatunnel-engine-server \ -Djvm="$JAVA11_HOME/bin/java" \ -Dtest=RestApiSubmitJobConfigShadeDecryptTest,TaskExecutionServiceTest \ surefire:test ``` The second command uses the classes compiled by the first. Offline execution requires the dependencies and Maven plugins to be present locally. No full engine-suite, Windows, container E2E, or completed upstream CI pass is claimed. The passing execution-service tests are adjacent regression evidence, not proof that this patch fixes their separate timer-cancellation CI failure. ### Check list * [x] Regression coverage added to the existing test class; existing functional assertions retained. * [ ] If any new Jar binary package adding in your PR, please add License Notice according [New License Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/developer/new-license.md) * [ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs * [ ] If necessary, please update `incompatible-changes.md` to describe the incompatibility caused by this PR. * [ ] If you are contributing the connector code, please check that the following files are updated: 1. Update [plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties) and add new connector information in it 2. Update the pom file of [seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml) 3. Add ci label in [label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml) 4. Add e2e testcase in [seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/) 5. Update connector [plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config) The four conditional template items are not applicable: no new binary dependency, user-facing feature, compatibility change, or connector code is included. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
