Unified release workflow for shaded and thin JARs#1
Closed
gopalldb wants to merge 5 commits into
Closed
Conversation
- Add build-helper-maven-plugin to attach unshaded JAR with -thin classifier - Merge release.yml and release-thin.yml into single workflow - Publish both artifacts to Maven Central in one workflow - Shaded JAR: com.databricks:databricks-jdbc (main artifact) - Thin JAR: com.databricks:databricks-jdbc-thin (separate artifact with thin_public_pom.xml) Signed-off-by: Gopal Lal <gopal.lal@databricks.com>
The thin JAR is now published in the main release.yml workflow along with the shaded JAR, eliminating the need for a separate workflow. Signed-off-by: Gopal Lal <gopal.lal@databricks.com>
The jacoco:report goal is bound to the prepare-package phase in pom.xml. Running 'mvn clean test jacoco:report' stops after test phase and never reaches prepare-package, causing the coverage file to not be generated. Changed to 'mvn clean package' which runs through prepare-package phase and generates the coverage report at target/site/jacoco/jacoco.xml. Tested locally: - Coverage file generated successfully - Coverage: 85.23% (passes 85% requirement)
|
This PR has been marked as Stale because it has been open for 30 days with no activity. If you would like the PR to remain open, please remove the stale label or comment on the PR. |
|
This PR was closed because it has been inactive for 7 days since being marked as stale. |
gopalldb
pushed a commit
that referenced
this pull request
May 5, 2026
…icks#1428) ## Summary Three CI workflows on `main` have been failing. This PR fixes the root causes. ### 1. `Integration Tests Workflow - Main Branch` (failing 30+ runs in a row since Apr 8) - The cache step uses `path: ~/.m2` with a long-lived restore-key `${{ runner.os }}-m2`. It restores a stale cache from before the JFrog OIDC migration, whose `~/.m2/settings.xml` (the github-server one written by `actions/setup-java`) **overwrites** the JFrog mirror config that the preceding "Configure maven" step just wrote. - Maven then tries to resolve from `repo.maven.apache.org` directly, which the protected runner cannot reach: `Could not transfer artifact ... from/to central (https://repo.maven.apache.org/maven2): Remote host terminated the handshake`. - **Fix**: narrow `path` to `~/.m2/repository` so `settings.xml` is left alone (matches the pattern used by `warmMavenCache.yml`). ### 2. `Weekly bug catcher` — same root cause as #1 Same fix in `bugCatcher.yml`. ### 3. `Test JDBC Logging` (Windows jobs failing since Apr 27) - The "Get JFrog OIDC token" step uses bash syntax (`if [ -z "$X" ]`, `set -euo pipefail`) but has no `shell:` directive. On Windows runners the default shell is `pwsh`, which fails parsing the bash `if` with `Missing '(' after 'if'`. The "Configure maven" step has the same problem (bash heredoc). - **Fix**: pin both steps to `shell: bash`. Linux jobs were unaffected because their default shell is already bash. ## Test plan - [ ] After merge, confirm `Integration Tests Workflow - Main Branch` passes on the next push to `main` - [ ] After merge, confirm `Test JDBC Logging` Windows jobs pass on the next push to `main` - [ ] Next scheduled `Weekly bug catcher` run (Mondays 00:00 UTC) is green NO_CHANGELOG=true OVERRIDE_FREEZE=true This pull request and its description were written by Isaac. --------- Signed-off-by: Vikrant Puppala <vikrant.puppala@databricks.com>
gopalldb
added a commit
that referenced
this pull request
May 11, 2026
Major fixes: - #1: Use 2-thread pool instead of single-thread to prevent one blocked heartbeat RPC from starving others on the same connection - databricks#3: Fix getStoppedFlag() leak — use get() + ALREADY_STOPPED sentinel instead of computeIfAbsent() which re-created a false flag after stopHeartbeat() removed it, causing RPCs after stop Minor fixes: - #2: Increase awaitTermination from 5s to 10s with explanatory comment - databricks#4: Add comment about client capture retaining session reference - #5: Document reactive vs proactive heartbeat stop limitation - databricks#6, databricks#7, #9, databricks#10, databricks#11: Acknowledged as correct/acceptable per reviewer Co-authored-by: Isaac Signed-off-by: Gopal Lal <gopal.lal@databricks.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR simplifies the release process by publishing both shaded and thin JARs in a single unified workflow, replacing the multi-module approach with a cleaner single-module solution.
Changes
pom.xml
build-helper-maven-pluginto attach unshaded JAR with-thinclassifier before shadingdatabricks-jdbc-{version}-thin.jarautomatically during build.github/workflows/release.yml
com.databricks:databricks-jdbc(main artifact)com.databricks:databricks-jdbc-thin(with thin_public_pom.xml).github/workflows/release-thin.yml
Benefits
✅ Single workflow - Both JARs published in one GitHub Actions run
✅ Minimal changes - Only 3 files modified, no code refactoring
✅ Backward compatible - Existing users unaffected (shaded JAR remains main artifact)
✅ Simple maintenance - Single module, no parent/child POM complexity
✅ Clean build -
mvn packagecreates both JARs automaticallyBuild Output
Testing
Replaces
This is a simpler alternative to PR databricks#1042 (multi-module approach), providing the same functionality with less complexity.
NO_CHANGELOG=true - Infrastructure change, no user-facing functionality changes