Skip to content

revert(lcm): Revert Redshift JDBC 2.2.9 and CentOS base image - #2117

Closed
milandufek wants to merge 1 commit into
masterfrom
md-revert-redshift-jdbc-2x
Closed

milandufek wants to merge 1 commit into
masterfrom
md-revert-redshift-jdbc-2x

Conversation

@milandufek

@milandufek milandufek commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Jira: GRIF-1221

Why

LCM bricks that read from Redshift with basic authentication fail with
FATAL: password authentication failed for user "apache" since 3.7.109 (#2115) was promoted to stable/lcm-bricks:latest and stable/lcm-bricks-nextversion:latest.
Brick pods pull :latest, so every DC runs the new image. The users brick on na3 has failed on every hourly run since 08:30Z.

Cause

redshift-jdbc42 2.2.9 ignores the UID property that redshift_client.rb sets:

  • Driver.loadDefaultProperties() defaults user to the JVM user.name.
  • connect() layers the caller's properties over those defaults.
  • Driver.user() reads user first and reads UID only if user is null.

user is never null, so UID is never used. Every basic-auth connection logs in as the container user apache with the configured password.
This was read from the bytecode of the 2.2.9 jar (checksum matches Maven Central). A live connection test was not run.
The 1.2.36 driver used before has no such default.

What

The tree is identical to the 3.7.108 release (git diff 3da85bf8 HEAD shows only VERSION).
That is the combination that ran in production until 3.7.109.

Rollout

The merge queue builds both images and moves :latest in promote-to-stable. Brick pods pull the new image on their next start.
No re-registration of the LCM components is needed for the fix. The registration points at :latest and stores only descriptive metadata such as the version.

Verify after the merge

  • The lcm-brick pods run a new image digest.
  • The next hourly users brick run on na3 logs Realize SQL query: type=redshift status=finished.
  • The second per-workspace sync schedule runs again.
  • The Redshift brick run on fra1 (about 02:00Z) succeeds.

Risks

  • AWS lists 2026-10-30 as the change date for the Redshift JDBC 1.x driver. It is not confirmed whether 1.x connections are blocked. If they are, this revert needs a forward fix instead.
  • Re-landing the 2.x upgrade needs user and password to be set in redshift_client.rb and a test against a real Redshift. The e2e job has no Redshift configuration, so it cannot catch this.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated the Java runtime environment and added support for additional system utilities.
    • Updated the release version to 3.7.110.
    • Updated the components used for Redshift connectivity.

Revert #2115 and #2114 and release the result as 3.7.110.

With redshift-jdbc42 2.2.9 the driver ignores the UID property that
redshift_client.rb sets: Driver.loadDefaultProperties() defaults "user"
to the JVM user.name and Driver.user() reads UID only when "user" is
null. Every basic-auth Redshift connection therefore logs in as the
container user "apache". The users brick on na3 has failed hourly with
"password authentication failed for user apache" since 08:30Z.

The tree matches the 3.7.108 release (Fedora base image and
redshift-jdbc42-no-awssdk 1.2.36.1060). VERSION is bumped to 3.7.110
instead of restored to 3.7.108, because images are tagged with VERSION
and 3.7.108 already exists.

JIRA: GRIF-1221
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 893cc4fe-196a-4caa-b880-9166122e5e6d
Commits

Reviewing files that changed from the base of the PR and between 5524efb and e43db2c.

Files selected for processing: 4
  • Dockerfile
  • DockerfileOldImage
  • VERSION
  • ci/redshift/pom.xml

Included review availability: This review used your included allowance. 4 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

Walkthrough

The PR updates both Java 11 JRE Dockerfiles and the project version. It also replaces the Redshift JDBC artifact and changes the AWS SDK dependencies in the Redshift Maven configuration.

Changes: Java 11 runtime image

Layer / File(s) Summary
Image configuration and release version
Dockerfile, DockerfileOldImage, VERSION
Both Dockerfiles use the Java 11 JRE image tagged 202609300803.5ae07065-f44 and update the parent_image label. Package installation adds gawk and bzip2; DockerfileOldImage also adds gnupg. VERSION changes from 3.7.109 to 3.7.110.

Redshift JDBC dependencies

Layer / File(s) Summary
JDBC and AWS SDK dependency set
ci/redshift/pom.xml
The Redshift JDBC dependency changes to redshift-jdbc42-no-awssdk version 1.2.36.1060. AWS SDK v2 and Jackson Databind dependencies are removed. AWS SDK v1 Core, Redshift, and STS dependencies are added at version 1.11.633.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Possibly related PRs

Suggested reviewers: hung-nguyen-hoang

Merge Risk: Minimal · up to e43db

This change reverts the JDBC and base image upgrades that broke basic-authentication Redshift connections and releases the result as 3.7.110. No concrete merge-blocking defect was found. After merge, confirm the new image digest and run the Redshift brick to validate it.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the two main changes: reverting the Redshift JDBC 2.2.9 dependency and reverting the CentOS base image change.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (4 skipped: 4 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checks the image tag,
Then packs new tools into its bag.
The JDBC names rearrange,
While SDK versions change.
The version hops one step ahead,
And carrots wait beside the build.

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge Do not merge this yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants