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]

Reply via email to