SEZ9 opened a new issue, #11510:
URL: https://github.com/apache/seatunnel/issues/11510

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue) and found no 
similar issues.
   
   ### What happened
   
   The official Docker image `apache/seatunnel:latest` (2.3.13) ships 
`opengauss-jdbc-5.1.0.jar` in `/opt/seatunnel/lib/`. This jar contains its own 
copy of the `org.postgresql.Driver` class (openGauss's JDBC driver is a fork of 
pgJDBC that keeps the original package names). Because both jars sit on the 
global classpath, the openGauss copy can hijack the class resolution for the 
real PostgreSQL driver (`postgresql-42.4.3.jar`, also in `lib/`).
   
   Result: **every PostgreSQL connection through the Jdbc connector fails** 
against a standard PostgreSQL 14 server using scram-sha-256 auth:
   
   ```
   Caused by: org.postgresql.util.PSQLException: Protocol error.  Session setup 
failed.
   ```
   
   ### Evidence that this is a jar conflict, not a network/credentials issue
   
   All executed inside the same `apache/seatunnel:latest` container against the 
same PG 14 server (`postgres:14-alpine`, scram-sha-256):
   
   1. TCP reachable: `bash -c "echo > /dev/tcp/postgres/5432"` — OK
   2. Plain JDBC with **only** the bundled pgJDBC on the classpath — OK:
      `java -cp /tmp:/opt/seatunnel/lib/postgresql-42.4.3.jar T` → `rows=3`
   3. Same connection through `seatunnel.sh -m local` (full `lib/` classpath) — 
fails with "Protocol error. Session setup failed."
   4. Shadowing the openGauss jar with an empty file fixes it:
      `docker run -v 
/tmp/empty.jar:/opt/seatunnel/lib/opengauss-jdbc-5.1.0.jar:ro ...` → job 
FINISHED
   
   Jar scan confirms three jars on the image contain 
`org/postgresql/core/v3/ConnectionFactoryImpl`:
   - `/opt/seatunnel/lib/postgresql-42.4.3.jar` (real driver)
   - `/opt/seatunnel/lib/opengauss-jdbc-5.1.0.jar` (conflicting fork)
   - `/opt/seatunnel/connectors/connector-cdc-opengauss-2.3.13.jar`
   
   ### What you expected to happen
   
   PostgreSQL connections work out of the box with the official image.
   
   Suggested fixes (either):
   - move `opengauss-jdbc` out of the global `lib/` and load it only with the 
openGauss connector's classloader, or
   - shade/relocate the `org.postgresql` packages inside the openGauss jar.
   
   ### How to reproduce
   
   ```bash
   docker network create t
   docker run -d --name pg --network t -e POSTGRES_USER=u -e 
POSTGRES_PASSWORD=p -e POSTGRES_DB=d postgres:14-alpine
   # minimal config: Jdbc source url jdbc:postgresql://pg:5432/d, user u, 
password p, query "SELECT 1", Console sink
   docker run --rm --network t -v /path/to/job.conf:/j.conf 
apache/seatunnel:latest \
     /opt/seatunnel/bin/seatunnel.sh --config /j.conf -m local
   # -> Protocol error. Session setup failed.
   ```
   
   ### SeaTunnel Version
   
   2.3.13 (apache/seatunnel:latest, digest sha256:2b1d327df210...)
   
   ### SeaTunnel Config
   
   ```hocon
   env { parallelism = 1
     job.mode = "BATCH" }
   source { Jdbc {
     url = "jdbc:postgresql://postgres:5432/analytics"
     driver = "org.postgresql.Driver"
     user = "bench"
     password = "..."
     query = "SELECT * FROM customers"
     plugin_output = "j" } }
   sink { Console { plugin_input = "j" } }
   ```
   
   ### Running Command
   
   ```
   /opt/seatunnel/bin/seatunnel.sh --config /j.conf -m local
   ```
   
   ### Error Exception
   
   ```
   Caused by: org.apache.seatunnel.api.table.factory.FactoryException: 
ErrorCode:[API-06], ErrorDescription:[Factory initialize failed]
   Caused by: 
org.apache.seatunnel.api.table.catalog.exception.CatalogException: 
ErrorCode:[API-03], ErrorDescription:[Catalog initialize failed]
   Caused by: org.postgresql.util.PSQLException: Protocol error.  Session setup 
failed.
   ```
   
   ### Zeta or Flink or Spark Version
   
   Zeta (local mode)
   
   ### Java or Scala Version
   
   openjdk 1.8.0_342 (bundled in image)
   
   ### Screenshots
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
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