fix(outbox): align shedlock to 7.6.0 (latent outboxLockProvider NoSuchMethodError) #26

Merged
hibryda merged 1 commit from fix/shedlock-7.6.0-align into main 2026-06-03 20:16:11 +02:00
Owner

Align shedlock to 7.6.0 — fix latent outbox outboxLockProvider NoSuchMethodError

TL;DR: READY-FOR-REVIEW. outbox-publisher pinned shedlock 6.0.2 but every consumer runs 7.6.0; the @ConditionalOnMissingBean outboxLockProvider fallback calls usingDbTime(), whose bytecode descriptor differs across that gap → NoSuchMethodError for any outbox consumer without its own LockProvider. Bumped to 7.6.0; mvn -pl outbox-publisher -am clean test → 127 tests green.

Summary

OutboxAutoConfiguration.outboxLockProvider (outbox-publisher/.../OutboxAutoConfiguration.java:241) — the fallback LockProvider, activated only when the consuming service doesn't supply its own — builds a JdbcTemplateLockProvider with .usingDbTime(), compiled against the pinned shedlock.version=6.0.2. Consumers (verified via user-service mvn dependency:tree) resolve shedlock 7.6.0. usingDbTime()'s descriptor changed between 6.0.2 and 7.6.0, so the 6.0.2-compiled fallback NoSuchMethodErrors against the 7.6.0 runtime when activated.

Latent because all current consumers provide their own LockProvider (suppressing this @ConditionalOnMissingBean). Surfaced empirically during the user-service #372 investigation — gating user-service's ShedLockConfig off unmasked the fallback → 191 context-load failures with NoSuchMethodError: usingDbTime.

Fix

outbox-publisher/pom.xml: <shedlock.version> 6.0.2 → 7.6.0 — recompiles the fallback (and all platform-libs shedlock usage) against the version consumers actually run. No consumer change needed; they already run 7.6.0 and pick up the fixed 1.1.0-SNAPSHOT.

Verification

mvn -o -pl outbox-publisher -am clean test → BUILD SUCCESS, 127 tests, 0 failures, 0 warnings. test-compile clean vs 7.6.0; usingDbTime() resolves in 7.6.0 (user-service runs it in prod, unmodified).

Follow-up (not in this PR)

platform-libs + consumers must keep shedlock in lockstep — a Maven enforcer dependencyConvergence rule would guard against re-drift.

im2be-platform-libs • shedlock 6.0.2→7.6.0 outbox-fallback fix • fix/shedlock-7.6.0-alignmain • surfaced by user-service #372

## Align shedlock to 7.6.0 — fix latent outbox `outboxLockProvider` NoSuchMethodError **TL;DR:** `READY-FOR-REVIEW.` outbox-publisher pinned shedlock **6.0.2** but every consumer runs **7.6.0**; the `@ConditionalOnMissingBean` `outboxLockProvider` fallback calls `usingDbTime()`, whose bytecode descriptor differs across that gap → `NoSuchMethodError` for any outbox consumer without its own `LockProvider`. Bumped to 7.6.0; `mvn -pl outbox-publisher -am clean test` → 127 tests green. ### Summary `OutboxAutoConfiguration.outboxLockProvider` (`outbox-publisher/.../OutboxAutoConfiguration.java:241`) — the fallback `LockProvider`, activated only when the consuming service doesn't supply its own — builds a `JdbcTemplateLockProvider` with `.usingDbTime()`, compiled against the pinned `shedlock.version=6.0.2`. Consumers (verified via user-service `mvn dependency:tree`) resolve shedlock **7.6.0**. `usingDbTime()`'s descriptor changed between 6.0.2 and 7.6.0, so the 6.0.2-compiled fallback `NoSuchMethodError`s against the 7.6.0 runtime when activated. **Latent** because all current consumers provide their own `LockProvider` (suppressing this `@ConditionalOnMissingBean`). Surfaced empirically during the user-service #372 investigation — gating user-service's `ShedLockConfig` off unmasked the fallback → 191 context-load failures with `NoSuchMethodError: usingDbTime`. ### Fix `outbox-publisher/pom.xml`: `<shedlock.version>` 6.0.2 → 7.6.0 — recompiles the fallback (and all platform-libs shedlock usage) against the version consumers actually run. No consumer change needed; they already run 7.6.0 and pick up the fixed `1.1.0-SNAPSHOT`. ### Verification `mvn -o -pl outbox-publisher -am clean test` → BUILD SUCCESS, **127 tests, 0 failures, 0 warnings**. test-compile clean vs 7.6.0; `usingDbTime()` resolves in 7.6.0 (user-service runs it in prod, unmodified). ### Follow-up (not in this PR) platform-libs + consumers must keep shedlock in lockstep — a Maven enforcer `dependencyConvergence` rule would guard against re-drift. ### Footer im2be-platform-libs • shedlock 6.0.2→7.6.0 outbox-fallback fix • `fix/shedlock-7.6.0-align` → `main` • surfaced by user-service #372
fix(outbox): align shedlock to 7.6.0 to match consumer runtime
All checks were successful
im2be-platform-libs CI / mvn install (pull_request) Successful in 4m13s
im2be-platform-libs CI / mvn verify (main only) (pull_request) Has been skipped
2d5acd4a00
OutboxAutoConfiguration.outboxLockProvider (the @ConditionalOnMissingBean
LockProvider fallback) calls JdbcTemplateLockProvider.Configuration.builder()
.usingDbTime(), compiled against the pinned shedlock 6.0.2. But every consuming
service resolves shedlock 7.6.0 (verified: user-service dependency:tree —
shedlock-spring/core/provider-jdbc-template all 7.6.0). usingDbTime()'s bytecode
descriptor differs between 6.0.2 and 7.6.0, so when the fallback activates (an
outbox consumer that does NOT provide its own LockProvider) the 6.0.2-compiled
call throws NoSuchMethodError against the 7.6.0 runtime — a latent startup crash.

Latent today because all current consumers provide their own LockProvider
(suppressing this @ConditionalOnMissingBean fallback). Surfaced during the
user-service #372 investigation: gating its ShedLockConfig off unmasked this
fallback -> 191 context-load failures with NoSuchMethodError: usingDbTime.

Fix: bump outbox-publisher shedlock.version 6.0.2 -> 7.6.0 so the fallback is
compiled against the same shedlock the consumers run. platform-libs + consumers
must keep shedlock in lockstep; a Maven enforcer dependencyConvergence rule would
guard against future re-drift (follow-up).

Verification:
- mvn -o -pl outbox-publisher -am clean test -> BUILD SUCCESS, 127 tests, 0 failures
- test-compile clean vs 7.6.0; usingDbTime() exists + resolves in 7.6.0 (user-service runs it)

hib-pr-reviewer review — PR #26 (affinity-intelligence-rework/im2be-platform-libs)

Round 1 — head 2d5acd4a0085, base main, trigger opened

TL;DR: APPROVE — single shedlock version bump is correct and safe; one minor stale-comment follow-on deferred.

Summary

[quorum-converged] A=0 = B=0. # hib-pr-reviewer — round 1

Reviewing PR #26 in affinity-intelligence-rework/im2be-platform-libs
(head 2d5acd4, base main).

CI status (head 2d5acd4a0085)

Overall: pending

2 checks: 2 pending

Check State Link
im2be-platform-libs CI / mvn verify (main only) (pull_request) pending details
im2be-platform-libs CI / mvn install (pull_request) pending details

Findings

No new findings this round.

Quorum converged on empty findings (A + B both returned 0).

Verdict

APPROVE


hib-pr-reviewer • round 1 • 0 findings • 2026-06-03T18:10:15.565Z → 2026-06-03T18:13:14.234Z • posted-as: pr-reviewer-bot • model: auto

<!-- hib-pr-reviewer round:1 --> ## hib-pr-reviewer review — PR #26 (affinity-intelligence-rework/im2be-platform-libs) **Round 1** — head `2d5acd4a0085`, base `main`, trigger `opened` **TL;DR:** APPROVE — single shedlock version bump is correct and safe; one minor stale-comment follow-on deferred. ### Summary [quorum-converged] A=0 = B=0. # hib-pr-reviewer — round 1 Reviewing PR **#26** in `affinity-intelligence-rework/im2be-platform-libs` (head `2d5acd4`, base `main`). ### CI status (head `2d5acd4a0085`) **Overall: ⏳ pending** 2 checks: 2 pending | Check | State | Link | |---|---|---| | im2be-platform-libs CI / mvn verify (main only) (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/127/jobs/1) | | im2be-platform-libs CI / mvn install (pull_request) | ⏳ pending | [details](/affinity-intelligence-rework/im2be-platform-libs/actions/runs/127/jobs/0) | ### Findings **No new findings this round.** _Quorum converged on empty findings (A + B both returned 0)._ ### Verdict **APPROVE** --- <sub>hib-pr-reviewer • round 1 • 0 findings • 2026-06-03T18:10:15.565Z → 2026-06-03T18:13:14.234Z • posted-as: pr-reviewer-bot • model: auto</sub>
hibryda deleted branch fix/shedlock-7.6.0-align 2026-06-03 20:16:11 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
affinity-intelligence-rework/im2be-platform-libs!26
No description provided.