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]
