Skip to content

Fix unresolvable 3.3.2 Maven Central POM for uber jar#1432

Merged
vikrantpuppala merged 1 commit intomainfrom
fix/uber-pom-strip-jdbc-core-dep
Apr 29, 2026
Merged

Fix unresolvable 3.3.2 Maven Central POM for uber jar#1432
vikrantpuppala merged 1 commit intomainfrom
fix/uber-pom-strip-jdbc-core-dep

Conversation

@vikrantpuppala
Copy link
Copy Markdown
Collaborator

@vikrantpuppala vikrantpuppala commented Apr 28, 2026

Summary

  • Fixes 3.3.2 release is unresolvable: POM depends on databricks-jdbc-core:3.3.2 which was not published to Maven Central #1431. The uber jar's published 3.3.2 POM on Maven Central declares a compile dependency on com.databricks:databricks-jdbc-core:3.3.2, which is never published. Consumers bumping to 3.3.2 fail to resolve.
  • Switch flatten-maven-plugin for assembly-uber from <dependencies>expand</dependencies> to <dependencies>remove</dependencies>. The shaded uber jar bundles every runtime class, so the published POM should declare zero compile deps.
  • Adds a code comment explaining what .flattened-pom.xml is and why the dependencies must be stripped.

Why expand was wrong

flatten-maven-plugin's expand rewrites direct + transitive deps into a flat list, but it doesn't strip a direct dependency that points at an unpublished sibling module. databricks-jdbc-core is built locally during the release workflow's mvn install -pl jdbc-core -am step but is intentionally not deployed to Maven Central. The 3.3.1 release happened to publish a POM with no <dependencies> section (via the prior release pipeline); 3.3.2 was the first release through the new peco-databricks-jdbc.yml workflow, and that workflow uploads assembly-uber/.flattened-pom.xml as the published POM — which still names databricks-jdbc-core as a compile dep.

Test plan

  • Reproduced the bug locally by running the release workflow's exact mvn invocations on main (v3.3.2 source) and confirming assembly-uber/.flattened-pom.xml had the broken databricks-jdbc-core dep.
  • Reproduced the consumer-side failure: mvn dependency:resolve of com.databricks:databricks-jdbc:3.3.2 against a local repo with jdbc-core removed fails with the same error reported in 3.3.2 release is unresolvable: POM depends on databricks-jdbc-core:3.3.2 which was not published to Maven Central #1431.
  • Verified the fix: with this patch applied, the rebuilt .flattened-pom.xml has no <dependencies> and no <parent>, byte-equivalent in shape to the published 3.3.1 POM. mvn dependency:resolve of com.databricks:databricks-jdbc:3.3.2 against a local repo missing both databricks-jdbc-core and databricks-jdbc-parent succeeds.
  • Recovery: a follow-up release (3.3.3) is needed since 3.3.2 cannot be yanked from Maven Central. This patch is the source-side change required for that release.

Companion change

A workflow-side change is also needed in databricks-eng/secure-public-registry-releases-eng so the thin JAR's published POM is sourced from dependency-reduced-pom.xml instead of .flattened-pom.xml. The thin POM happened to publish correctly for 3.3.1 due to flatten-plugin behaviour but is structurally fragile in the same way — that PR is filed separately.

NO_CHANGELOG=false

OVERRIDE_FREEZE=true

This pull request and its description were written by Isaac.

The uber jar's published POM declared a compile dependency on the
internal databricks-jdbc-core coordinate, which is never published to
Maven Central. Downstream consumers bumping to 3.3.2 saw:

  Could not find artifact com.databricks:databricks-jdbc-core:jar:3.3.2

Root cause: flatten-maven-plugin's <dependencies>expand</dependencies>
rewrites direct + transitive deps to a flat list, but does not drop a
direct dep that points at an unpublished sibling module. The shaded
uber jar contains every runtime class, so the published POM should
declare zero compile deps — switch flatten to <dependencies>remove</dependencies>.

Verified by re-running the release-workflow build sequence locally and
resolving com.databricks:databricks-jdbc:3.3.2 against a repo that
omits both jdbc-core and the parent POM (mimicking Maven Central state).
With the fix, resolution succeeds; without it, it fails identically to
issue #1431.

Fixes #1431

Co-authored-by: Isaac
Signed-off-by: Vikrant Puppala <vikrant.puppala@databricks.com>
@vikrantpuppala vikrantpuppala merged commit 3a039b7 into main Apr 29, 2026
15 of 18 checks passed
@vikrantpuppala vikrantpuppala deleted the fix/uber-pom-strip-jdbc-core-dep branch April 29, 2026 07:35
@vikrantpuppala vikrantpuppala mentioned this pull request Apr 29, 2026
5 tasks
vikrantpuppala added a commit that referenced this pull request Apr 29, 2026
## Summary

Recovers from the broken 3.3.2 Maven Central release (#1431) by cutting
3.3.3 with the source-side fix from #1432.

3.3.2 published a POM that declared an unresolvable transitive
dependency on `com.databricks:databricks-jdbc-core:3.3.2` (an internal
coordinate that is not published to Maven Central). Downstream consumers
bumping to 3.3.2 saw `Could not find artifact
com.databricks:databricks-jdbc-core:jar:3.3.2`. Yanking from Maven
Central is not possible, so 3.3.3 is the recovery release.

## Changes

- Version bump 3.3.2 → 3.3.3 across all POMs, the `DRIVER_VERSION`
constant in `DriverUtil`, and assertion strings in `DriverUtilTest`,
`DatabricksDatabaseMetaDataTest`,
`DatabricksDriverFeatureFlagsContextTest`.
- Move `NEXT_CHANGELOG.md` entries into `CHANGELOG.md` under `[v3.3.3]`.
Reset `NEXT_CHANGELOG.md` to empty template.
- Flip `development/.release-freeze.json` from `freeze: true` → `freeze:
false`.
- Update install snippet in `README.md`.

## Validation

The post-#1432 release artifacts have been pre-validated end-to-end via
a staging dry-run:

1. **Tagged `v3.3.3-rc1`** off the same commit pool as this release.
2. **Ran the `peco-databricks-jdbc` workflow with `staging-only=true`**
(USER_MANAGED upload to Sonatype Central Portal).
3. **Sonatype validated the bundle on attempt 2** — full validators
(signatures, checksums, POM completeness, namespace ownership, file
naming) all green.
4. **Inspected the staged POMs:**
- Uber POM: 0 dependencies, no `<parent>`, all required Maven Central
metadata present. Byte-shape-equivalent to the working 3.3.1 POM.
- Thin POM: 57 runtime deps, no `databricks-jdbc-core`, no
`databricks-jdbc-parent` references. Same shape as published 3.3.1 thin.
5. **Staged the bundle into a local file repo** and verified `mvn
dependency:resolve` of `com.databricks:databricks-jdbc:3.3.3-rc1`
succeeds — exactly the resolution that fails for 3.3.2.
6. **Built a probe project that imports the staged uber jar**, loaded
the driver via JDK ServiceLoader, opened a real connection to the
dogfood workspace, and round-tripped a `SELECT` query. Output:
   ```
   Driver class: com.databricks.client.jdbc.Driver
   Driver version: 3.3
   DriverVersion: 3.3.3-rc1
   Row: one=1 msg=hello
   PROBE_OK
   ```
7. **Dropped the rc1 deployment** in the Central Portal (deployment ID
`a83f922f-9750-4a14-b697-a6005a6fc858`) — never reached
`repo1.maven.org`.

## After merge

1. Tag `v3.3.3` on this commit.
2. Run `peco-databricks-jdbc` workflow off `main` of
`databricks/secure-public-registry-releases-eng` with `ref=v3.3.3`,
`dry-run=false`, `staging-only=false`.
3. Confirm 3.3.3 lands on Maven Central and resolves cleanly.

## Test plan

- [x] All version strings bumped in lockstep (verified by `git grep
"3\.3\.2"` returning only CHANGELOG hits).
- [x] Local build of jdbc-core + assembly-uber succeeds with the bumped
version.
- [x] `assembly-uber/.flattened-pom.xml` confirmed to have 0
`<dependencies>` after build.
- [x] End-to-end rc1 validation as described above.
- [ ] Post-merge: live publish run on Maven Central.

This pull request and its description were written by Isaac.

---------

Signed-off-by: Vikrant Puppala <vikrant.puppala@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3.3.2 release is unresolvable: POM depends on databricks-jdbc-core:3.3.2 which was not published to Maven Central

2 participants