[
https://issues.apache.org/jira/browse/FLINK-40781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-40781:
-----------------------------------
Labels: pull-request-available (was: )
> ArchUnit tests in flink-connector-jdbc don't analyse any production classes
> ---------------------------------------------------------------------------
>
> Key: FLINK-40781
> URL: https://issues.apache.org/jira/browse/FLINK-40781
> Project: Flink
> Issue Type: Bug
> Components: Connectors / JDBC
> Affects Versions: jdbc-3.3.0, jdbc-4.0.0, jdbc-4.1.0, jdbc-3.4.0
> Reporter: Martijn Visser
> Assignee: Martijn Visser
> Priority: Major
> Labels: pull-request-available
> Fix For: jdbc-5.0.0, jdbc-4.1.1
>
>
> Since FLINK-36009, the ArchUnit tests live in the separate
> flink-connector-jdbc-architecture module, and the modules they check are test
> dependencies of it. When the build goes beyond the test phase (CI runs `mvn
> clean deploy`), those dependencies resolve to jars.
> `ProductionCodeArchitectureTest` uses `ImportOption.DoNotIncludeArchives`, so
> it imports zero classes and every rule passes. Because `archunit.properties`
> sets `freeze.store.default.allowStoreUpdate=true`, the run also deletes all
> 96 frozen violations from the store. CI throws that away, which is why nobody
> noticed. Locally it shows up as a dirty `archunit-violations` directory after
> `mvn verify` or `mvn install`.
> With a plain `mvn test` the same rules see the classes and fail on violations
> that were never frozen. `TestCodeArchitectureTest` checks nothing in either
> case, because the tested modules' test classes aren't on its classpath.
> The other externalized connectors keep both tests in the module that holds
> the code, so their own classes are always in `target/classes`. The JDBC
> dialects each live in their own package
> (`org.apache.flink.connector.jdbc.postgres` etc.), so the same layout works
> here without extra import options. It also puts each module's own provided
> Flink dependencies on the classpath. The architecture module lacks
> `flink-runtime` and the table API, so the lineage API and `DataStream` show
> up there as non-public.
> Proposal: move `ProductionCodeArchitectureTest` and
> `TestCodeArchitectureTest` into core and each dialect module, freeze the
> current violations per module on the lowest Flink version in the CI matrix,
> and remove the architecture module plus the unused store in
> flink-connector-jdbc-core. Fixing the violations themselves (legacy
> `SinkFunction` in the SQL sink, `InitContext` in `JdbcWriter`, the
> `@PublicEvolving` signatures) goes in follow-up tickets.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)