Skip to content

fix: 캐시 키 생성 문제 수정 및 캐시 워밍업 인프라 개선#113

Merged
dev-ant merged 5 commits intodevfrom
fix/cache-hits
Mar 5, 2026
Merged

fix: 캐시 키 생성 문제 수정 및 캐시 워밍업 인프라 개선#113
dev-ant merged 5 commits intodevfrom
fix/cache-hits

Conversation

@dev-ant
Copy link
Contributor

@dev-ant dev-ant commented Mar 5, 2026

📋 상세 설명

  • 캐시 키 일관성 문제 수정

    • isExactItemName 값을 정규화하여 캐시 키의 일관성을 보장
      • (null인 경우 기본값을 true로 처리)
    • 또한 정렬 필드 이름의 오타를 수정
  • Redis 역직렬화 개선 및 캐시 워밍업 서비스 분리

    • RedisConfig에 Jackson default typing을 추가하여 다형성 역직렬화가 올바르게 동작하도록 개선
    • 또한 AuctionRealtimeCacheWarmupService를 새로 분리하여 여러 정렬 기준과 페이지 조합에 대해 캐시 삭제(eviction) 및 워밍업을 처리
  • Docker 및 Redis 설정 업데이트

    • Docker Compose 파일을 수정하여 Redis 설정을 local 환경으로 이동하고, Redis 서비스 정의를 추가

📊 체크리스트

  • PR 제목이 형식에 맞나요 e.g. feat: PR을 등록한다
  • 코드가 테스트 되었나요
  • 문서는 업데이트 되었나요
  • 불필요한 코드를 제거했나요
  • 이슈와 라벨이 등록되었나요 이슈 미등록

@dev-ant dev-ant requested a review from Copilot March 5, 2026 12:16
@dev-ant dev-ant self-assigned this Mar 5, 2026
@dev-ant dev-ant added the ✨feature 새로운 기능 추가 label Mar 5, 2026
@codecov
Copy link

codecov bot commented Mar 5, 2026

Codecov Report

❌ Patch coverage is 0% with 36 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ion/service/AuctionRealtimeCacheWarmupService.java 0.00% 32 Missing ⚠️
...ntil/the/eternity/common/util/CacheKeyBuilder.java 0.00% 3 Missing ⚠️
...pplication/scheduler/AuctionRealtimeScheduler.java 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

This comment was marked as outdated.

@github-actions
Copy link

github-actions bot commented Mar 5, 2026

✅ 테스트 결과 for PR

Build: success

🧪 테스트 실행 with Gradle
📈 Coverage: -0.00%

📁 테스트 결과
📁 커버리지 보고서 (HTML)

@dev-ant dev-ant changed the title fix: cache key fix: 캐시 키 생성 문제 수정 및 캐시 워밍업 인프라 개선 Mar 5, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 183 out of 183 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

public enum RealtimeSortField {
DATE_AUCTION_EXPIRE("dateAuctionExpire", "경매 만료 일시"),
DATE_AUCTION_REGISTER("dateRegister", "등록 일시"),
DATE_AUCTION_REGISTER("dateAuctionRegister", "등록 일시"),
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The field name was changed from "dateRegister" to "dateAuctionRegister", but the corresponding JPA entity field in AuctionRealtimeItem is dateRegister (line 38 of AuctionRealtimeItem.java). This mismatch will cause a runtime error when sorting by registration date, since Spring Data/QueryDSL won't be able to resolve dateAuctionRegister as a valid property. The field name should remain "dateRegister" to match the entity, or the entity field should be renamed accordingly.

Copilot uses AI. Check for mistakes.
Comment on lines +30 to +35
List<MetalwareSearchRequest> metalwareSearchRequests) {

public AuctionRealtimeSearchRequest {
if (isExactItemName == null) {
isExactItemName = true;
}
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The @Schema annotation on isExactItemName declares defaultValue = "false", but the compact constructor now sets the default to true when null. This is inconsistent and will confuse API consumers who read the documentation—they'll expect false as the default, but the actual behavior defaults to exact matching (true). Either update the @Schema(defaultValue = ...) annotation to "true" or change the compact constructor default to false.

Copilot uses AI. Check for mistakes.

public AuctionHistorySearchRequest {
if (isExactItemName == null) {
isExactItemName = true;
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same inconsistency as in AuctionRealtimeSearchRequest: the @Schema annotation on isExactItemName declares defaultValue = "false", but the compact constructor now sets the default to true when null. This is a breaking behavioral change (previously, Boolean.TRUE.equals(null) evaluated to false, matching the documented default). Either update the @Schema(defaultValue = ...) to "true", or change the default to false.

Suggested change
isExactItemName = true;
isExactItemName = false;

Copilot uses AI. Check for mistakes.
@dev-ant dev-ant merged commit ebbedcf into dev Mar 5, 2026
5 of 6 checks passed
@dev-ant dev-ant deleted the fix/cache-hits branch March 5, 2026 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature 새로운 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants