FrankChen021 commented on PR #20395:
URL: https://github.com/apache/druid/pull/20395#issuecomment-5770842365

   Round_1 compatibility review for this PR at exact head 
`086a40d689deccef5826c251353d893707a4ec36`.
   
   Result: INCOMPATIBLE. I am closing this dependency-only upgrade without 
merge because Vert.x 5.2.0 cannot safely replace the Vert.x 4.5.31 runtime used 
by Druid's unchanged Fabric8 Kubernetes Vert.x client.
   
   Dependency and release history reviewed
   
   The changed dependency is `vertx.version`, from `4.5.31` to `5.2.0`, 
affecting `io.vertx:vertx-core` and `io.vertx:vertx-web-client` in 
`extensions-core/kubernetes-overlord-extensions/pom.xml`. The complete 
published sequence reviewed for both artifacts was:
   
   `4.5.31`, `4.5.32`, `4.5.33`, `4.5.34`, `5.0.0.CR1`, `5.0.0.CR2`, 
`5.0.0.CR3`, `5.0.0.CR4`, `5.0.0.CR5`, `5.0.0.CR6`, `5.0.0.CR7`, `5.0.0.CR8`, 
`5.0.0`, `5.0.1`, `5.0.2`, `5.0.3`, `5.0.4`, `5.0.5`, `5.0.6`, `5.0.7`, 
`5.0.8`, `5.0.9`, `5.0.10`, `5.0.11`, `5.0.12`, `5.1.0`, `5.1.1`, `5.1.2`, 
`5.1.3`, `5.1.4`, `5.1.5`, `5.1.6`, `5.1.7`, `5.1.8`, `5.2.0`.
   
   `5.0.0.CR5` is published in Maven Central even though it is absent from the 
Git tag listing. The Vert.x 5 migration guide documents the relevant HTTP pool 
break: pool sizing moved from `HttpClientOptions` to `PoolOptions` ([migration 
guide](https://vertx.io/docs/guides/vertx-5-migration-guide/)).
   
   Compatibility evidence
   
   - API/ABI — INCOMPATIBLE: Druid directly imports the removed 
`io.vertx.core.spi.resolver.ResolverProvider`; every failed CI compile reported 
`package io.vertx.core.spi.resolver does not exist` and unresolved 
`ResolverProvider` references in `DruidKubernetesVertxHttpClientFactory.java`.
   - Runtime/client — INCOMPATIBLE: Fabric8 `kubernetes-httpclient-vertx:7.9.0` 
remains unchanged and its `VertxHttpClientBuilder.build()` bytecode calls 
`WebClientOptions.setMaxPoolSize`, `setMaxWebSockets`, 
`setMaxWebSocketFrameSize`, and `setMaxWebSocketMessageSize`. Those methods are 
absent from Vert.x 5.2.0, so the unchanged Kubernetes client path reaches a 
deterministic `NoSuchMethodError` before Druid's `additionalConfig` hook. 
Direct Maven resolution confirms Fabric8's Vert.x 4.5.31 dependencies are 
omitted in favor of the direct 5.2.0 artifacts.
   - Configuration — INCOMPATIBLE: Druid documents generic `WebClientOptions` 
pass-through and specifically documents `maxPoolSize` and `poolCleanerPeriod`; 
Vert.x 5.2.0 removed those setters in favor of `PoolOptions`. Existing Druid 
tests also configure and assert `maxPoolSize`.
   - Extension/plugin SPI — INCOMPATIBLE: the Fabric8 Vert.x HTTP-client SPI is 
binary-linked to the Vert.x 4 WebClientOptions surface; changing only Druid's 
property cannot repair that third-party ABI.
   - Transitive dependencies — CONCERN: Vert.x 5.2.0 adds 
`vertx-core-logging:5.2.0`, mediates Fabric8's Vert.x 4.5.31 graph, and leaves 
test-scope Vert.x 4.5.31 artifacts through Fabric8 mockwebserver. Netty is 
mediated to Druid's `4.2.18.Final`, but that does not resolve the Fabric8 ABI 
break.
   - Serialization/wire — SAFE for Druid-owned persistence/schema: this 
one-file change does not alter Druid persisted data or a Druid wire schema. The 
Kubernetes HTTP client cannot be considered runtime-safe because construction 
fails first.
   - Persistence — SAFE: no persistence format, segment, metadata, or durable 
state code is changed.
   - Licenses — CONCERN: Vert.x artifacts are Apache/EPL licensed, but Druid's 
`licenses.yaml` still records Vert.x `4.5.31` and does not list the new 
`vertx-core-logging` artifact; a coordinated dependency update would need the 
license registry update and regenerated reports.
   
   CI and artifacts
   
   The exact-head baseline was OPEN, non-draft, MERGEABLE/UNSTABLE with 27 
completed CheckRuns: 5 SUCCESS, 20 FAILURE, 1 NEUTRAL (CodeQL), 1 SKIPPED 
(coverage), and 0 StatusContexts. All 20 failures converged on the same 
Druid/Fabric8/Vert.x compile incompatibility: CodeQL Java (1), Static Checks 
(5), and Unit & Integration (14, including Docker, unit, and QTest shards). The 
web-checks job completed 159 suites / 786 tests / 247 snapshots before the same 
Maven compile failure. The only retained static artifact contained heap/jstack 
diagnostics; all 13 retained unit-report artifacts contained no failure or 
error elements. No eligible rerun was triggered because the failures were 
deterministic and PR-caused.
   
   Repair decision and action
   
   Replacing the Druid `ResolverProvider` reference with the preserved 
system-property name would fix only the first compile error. A safe repair 
requires a coordinated Fabric8 Vert.x-client upgrade or adapter, a new Vert.x 5 
`PoolOptions` configuration path while preserving the documented Druid 
settings, test updates, and license metadata/report changes. That is materially 
larger and riskier than this dependency-only PR. No source change was committed 
or pushed. This PR is being closed as incompatible and unmerged.
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to