Skip to content

chore(deps): Update dependency io.github.resilience4j:resilience4j-spring-boot3 to v2.4.0 - autoclosed#288

Closed
renovate[bot] wants to merge 1 commit into
developfrom
renovate/resilience
Closed

chore(deps): Update dependency io.github.resilience4j:resilience4j-spring-boot3 to v2.4.0 - autoclosed#288
renovate[bot] wants to merge 1 commit into
developfrom
renovate/resilience

Conversation

@renovate

@renovate renovate Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
io.github.resilience4j:resilience4j-spring-boot3 (source) 2.3.02.4.0 age confidence

Release Notes

resilience4j/resilience4j (io.github.resilience4j:resilience4j-spring-boot3)

v2.4.0

What's Changed
New Contributors

Full Changelog: resilience4j/resilience4j@v2.3.0...v2.4.0


Configuration

📅 Schedule: (in timezone Asia/Seoul)

  • Branch creation
    • "before 10am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@claude

claude Bot commented Jun 21, 2026

Copy link
Copy Markdown

Claude finished @renovate[bot]'s task in 1m 31s —— View job


🤖 Claude 의존성 영향도 분석

📦 변경점 요약

  • io.github.resilience4j:resilience4j-spring-boot3 2.3.0 → 2.4.0 (minor)

주요 변경 내용 (v2.4.0):

  • ignoreExceptionsrecordExceptions보다 우선 적용 — 두 설정이 겹칠 때의 동작 명확화 (Issue #2295)
  • Spring Boot 3 커스터마이저 적용 순서 수정 — 서킷 브레이커 초기화 시 커스터마이저 순서 버그 수정
  • slidingWindow 기본 동기화 전략 복원 — TIME_BASED + LOCK_FREE 조합에서 slidingWindowSize < 2 검증 추가
  • 서킷 브레이커 Half-Open → Closed 이동 설정 추가 — 신규 설정 옵션 (기존 동작 영향 없음)
  • 원하는 초기 상태로 서킷 브레이커 초기화 지원 — 신규 기능
  • Actuator 이벤트 엔드포인트에 스냅샷 읽기 적용 (Spring Boot 3/4) — 모니터링 API 동작 개선
  • kotlin-stdlib transitive 의존성 제거 — 불필요한 Kotlin 런타임 제거
  • JDK 타겟 유지 17 — (21로 올렸다가 17로 복원)

주요 transitive 의존성 변화: resilience4j-* 전 모듈 2.3.0 → 2.4.0 일괄 업데이트 (core, circuitbreaker, annotations, bulkhead, micrometer, retry, ratelimiter, timelimiter, spring6, consumer 등)


🎯 Q-Asker 영향도: 🟢 LOW

사용처:

  • modules/quiz-make/impl/.../AIServerAdapter.java:24@CircuitBreaker(name = "aiServer", fallbackMethod = "fallback") 어노테이션으로 Gemini AI 호출 보호
  • modules/quiz-make/impl/.../SseNotificationServiceImpl.java:59-62CircuitBreakerRegistryaiServer 서킷 상태(OPEN 여부) 체크 후 SSE 즉시 종료 처리
  • modules/global/.../GlobalExceptionHandler.java:3CallNotPermittedException 핸들러 (서킷 OPEN 시 클라이언트 응답 처리)

예상 영향:

  • ignoreExceptions 우선순위 변경: 우리 설정(resilience.yml)은 record-exceptions: [GeminiInfraException]만 사용하고 ignore-exceptions 미사용 → 영향 없음
  • Spring Boot 3 커스터마이저 순서 수정: 별도 커스터마이저 없이 기본 자동 구성만 사용 → 영향 없음
  • TIME_BASED + LOCK_FREE 검증 추가: 우리 설정은 sliding-window-type: COUNT_BASED영향 없음
  • Actuator 스냅샷 읽기 적용: 모니터링 이벤트 API의 응답 일관성 개선 → 긍정적 변화
  • Kotlin stdlib 제거: 불필요한 transitive 의존성 정리 → 긍정적 변화

⚠️ Renovate 아티팩트 업데이트 실패 관련

Renovate 댓글에서 lockfile 업데이트 실패가 보고됨:

Could not GET 'https://repo.maven.apache.org/maven2/.../gson-2.10.1.pom'. 
Received status code 429 from server: Too Many Requests

이는 Maven Central의 일시적 Rate Limiting으로 인한 것이며, 코드나 의존성 자체의 문제가 아님. Renovate가 다음 재시도 시 자동 해결될 것으로 예상.


✅ 권장 액션

  • CI green 확인
  • Renovate가 lockfile 재생성 재시도 후 정상 완료되는지 확인 (또는 PR 체크박스로 수동 rebase/retry 트리거)
  • 병합 후 서킷 브레이커 메트릭 (resilience4j_circuitbreaker_*) Prometheus/Grafana에서 정상 수집 확인

📋 참고

  • Release Notes: PR 본문 참조 (Full Changelog: v2.3.0...v2.4.0)
  • 분석 모델: claude-sonnet-4-6

@renovate renovate Bot force-pushed the renovate/resilience branch 2 times, most recently from ae7c2ef to 4c415e2 Compare June 21, 2026 09:41
@renovate renovate Bot changed the title chore(deps): Update resilience to v2.4.0 chore(deps): Update resilience Jun 22, 2026
@renovate renovate Bot force-pushed the renovate/resilience branch from 4c415e2 to 6729ed4 Compare June 23, 2026 06:43
@renovate renovate Bot changed the title chore(deps): Update resilience chore(deps): Update dependency io.github.resilience4j:resilience4j-spring-boot3 to v2.4.0 Jun 26, 2026
@renovate renovate Bot force-pushed the renovate/resilience branch 7 times, most recently from ee9909d to bca42c1 Compare July 3, 2026 01:19
@renovate renovate Bot force-pushed the renovate/resilience branch from bca42c1 to 0a0090d Compare July 3, 2026 02:50
@renovate

renovate Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: gradle/libs.versions.toml
Command failed: ./gradlew -Dorg.gradle.jvmargs=-Xms512m -Xmx512m --console=plain --dependency-verification lenient -q properties

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all artifacts for configuration 'classpath'.
> Could not resolve com.google.code.gson:gson:2.10.1.
  Required by:
      unspecified:unspecified:unspecified > org.gradle.toolchains.foojay-resolver-convention:org.gradle.toolchains.foojay-resolver-convention.gradle.plugin:0.8.0 > org.gradle.toolchains:foojay-resolver:0.8.0
   > Could not resolve com.google.code.gson:gson:2.10.1.
      > Could not get resource 'https://plugins.gradle.org/m2/com/google/code/gson/gson/2.10.1/gson-2.10.1.pom'.
         > Could not GET 'https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.pom'. Received status code 429 from server: Too Many Requests

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 17s

@GulSauce

GulSauce commented Jul 3, 2026

Copy link
Copy Markdown
Member

결정: Merge Now (회귀 GREEN 조건)

근거:

  • 2.3.0 → 2.4.0 minor 승격. Spring Boot 3.x 하위 호환 유지 (Spring Boot 4 지원 추가는 우리에게 순방향)
  • 우리에게 유리한 fix 다수: #2286 (HealthContributorAutoConfiguration ConditionalOnClass), #2321 (Spring Boot 3 customizer order)
  • 잠재 회귀 지점: #2358 (TIME_BASED + LOCK_FREE reject when slidingWindowSize < 2), #2304 (ignoreExceptions precedence) — 우리 aiServer 설정(COUNT_BASED, sliding=10, GeminiInfraException recorded)에는 영향 없음

회귀 방어: ApplicationContextBootTest.aiServerCircuitBreakerIsRegisteredWithExpectedConfig가 yml 파싱 후 failureRateThreshold=60, min=3, windowSize=10, halfOpen=2를 assertion.

재평가 트리거: 회귀 테스트 GREEN 이후 즉시.

GulSauce added a commit that referenced this pull request Jul 3, 2026
## 반영된 버전 승격

- spring-boot     3.5.8  → 4.1.0  (MAJOR, PR #292#294)
- spring-ai       1.1.2  → 2.0.0  (MAJOR)
- google-cloud    26.67  → 26.84  (PR #293)
- jib             3.4.0  → 3.5.3  (PR #293)
- jodconverter    4.4.9  → 4.4.11 (PR #291)
- pdfbox          3.0.3  → 3.0.7  (PR #291)
- resilience4j    2.3.0  → 2.4.0  (PR #288, spring-boot4 모듈로 참조 교체)
- Temurin base    21     → 25     (PR #290)
- springdoc       2.8.17 → 3.0.3  (Boot 4 호환 라인)

## Boot 4 breaking change 해소

1. `spring-boot-starter-aop` 아티팩트 제거 → `spring-boot-starter-aspectj`로 rename
2. Jackson 3.x(tools.jackson) 도입:
   - com.fasterxml.jackson.databind.* → tools.jackson.databind.*
   - com.fasterxml.jackson.core.type.TypeReference → tools.jackson.core.type.TypeReference
   - com.fasterxml.jackson.core.JsonProcessingException → tools.jackson.core.JacksonException
   - ObjectNode.fields() 제거 → ObjectNode.properties() (Set<Entry>)
   - Iterator.forEachRemaining → Collection.forEach
   - com.fasterxml.jackson.annotation.*는 Jackson 3에서 그대로 유지
3. RateLimitFilter의 ObjectMapper 주입 실패 → auth-impl에 spring-boot-starter-json 명시
4. LegacyJacksonConfig 신설(global/config):
   - RestClient.Builder Bean 명시 (SlackNotifier용)
   - CacheManager Bean 명시 (@EnableCaching 대응)
5. resilience4j-spring-boot3 → resilience4j-spring-boot4 (Boot 4 전용 모듈)
6. SpringDoc 3.0.3 승격 (2.x는 Boot 4의 WebMvcProperties를 못 찾음)

## 신규 회귀 세이프티 넷

- app/src/test/.../ApplicationContextBootTest (RT-001 + RT-004):
  contextLoads / chatModelBeanIsPresent / aiServerCircuitBreakerIsRegisteredWithExpectedConfig
- modules/quiz-ai/impl/src/test/.../PdfUtilsTest (RT-003):
  pdfbox extractPages 정상 슬라이스 / 범위 초과 무시 / 빈 리스트 원본 반환
- modules/quiz-ai/impl/src/test/.../GeminiChatServiceSmokeTest (RT-005):
  Spring AI 2.0의 chatModel.call → JSON 파싱 사슬 유지 확인

## 검증

- ./gradlew build GREEN
- ./gradlew spotlessCheck GREEN
- pre-push hook 통과

## 남은 후속 티켓 후보

- Jackson 3.x 도입 후 LegacyJacksonConfig 클래스명 재검토 (이제 Jackson과 무관)
- Temurin 25 base 이미지 재빌드 + LibreOffice 설치·GC 튜닝 검증 (docker build)
- 첫 프로덕션 배포 후 Actuator/Micrometer 태그 변경 및 GC pause 관측

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@renovate renovate Bot changed the title chore(deps): Update dependency io.github.resilience4j:resilience4j-spring-boot3 to v2.4.0 chore(deps): Update dependency io.github.resilience4j:resilience4j-spring-boot3 to v2.4.0 - autoclosed Jul 4, 2026
@renovate renovate Bot closed this Jul 4, 2026
@renovate renovate Bot deleted the renovate/resilience branch July 4, 2026 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant