Skip to content

[FIX/#457] 리뷰 목록 조회 500 에러 수정 및 dev 리소스 한도 상향 - #458

Merged
2ghrms merged 2 commits into
developfrom
fix/#457-review-pagination-500
Sep 13, 2026
Merged

2ghrms merged 2 commits into
developfrom
fix/#457-review-pagination-500

Conversation

@2ghrms

@2ghrms 2ghrms commented Sep 8, 2026 •

Copy link
Copy Markdown
Member

#️⃣연관된 이슈

close #457

📝작업 내용

dev 환경에 대해 Locust로 step 부하테스트(10분씩 3단계, 5→10→20명)를 진행하던 중 두 가지 문제를 발견해 수정했다.

  1. 리뷰 목록 조회 API 500 에러: page 파라미터 없이 호출하면(가장 흔한 케이스) 무조건 500이 나는 버그
  2. dev 앱 리소스 한도 부족: 동시접속 10명 수준에서 500m/512Mi 한도에 걸려 GC 압박 → 헬스체크 타임아웃 → 파드 강제 재시작까지 재현됨

🔎코드 설명

  • ReviewServiceImpl.checkStudentReview/checkPartnerReview/checkStoreReview: PageRequest.of(pageable.getPageNumber() - 1, ...)로 무조건 -1 보정하던 코드 제거. Spring의 Pageable은 이미 0-indexed이고 page 미지정 시 기본값이 0이라, 이 보정 때문에 PageRequest.of(-1, ...) → IllegalArgumentException → 500이 발생하고 있었음. 미사용 PageRequest import도 정리
  • ASSU_BE_manifest: overlays/dev/deployment-patch.yaml의 앱 컨테이너 리소스를 requests 100m/256Mi → 150m/384Mi, limits 500m/512Mi → 700m/700Mi로 상향. assu-dev-quota도 함께 상향(limits.memory 1500Mi → 1750Mi 등). dev 노드(t3.small, allocatable ~1905Mi) 기준 실제 워크로드 합계(alloy+redis+rabbitmq+app)가 1648Mi로 새 quota 안에 들어오고 노드에 시스템 파드용 여유(~155Mi)도 남도록 계산함(manifest는 이미 main에 반영·배포됨, 서브모듈 포인터만 갱신)

💬고민사항 및 리뷰 요구사항

  • 리뷰 페이지네이션 버그는 prod도 동일 코드라 영향받을 것으로 추정 — prod 배포 우선순위 검토 필요
  • dev 리소스 상향 폭(700m/700Mi)은 부하테스트로 실측한 필요치를 기준으로 보수적으로 잡았지만, 그래도 20명 단계까지는 검증 못 했음(10명 단계에서 파드가 무너져 테스트를 중단함). 필요하면 추가 상향 논의 필요
  • 부하테스트 스크립트/결과는 loadtest/ 디렉토리 참고

비고 (Optional)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • 버그 수정
    • 리뷰 조회 시 페이지 번호가 불필요하게 변환되지 않도록 수정하여, 요청된 페이지 기준으로 결과가 조회됩니다.
    • 학생, 파트너, 매장 리뷰 조회에 동일하게 적용되었습니다.

2ghrms and others added 2 commits September 8, 2026 23:19
- checkStudentReview/checkPartnerReview/checkStoreReview에서 Pageable을
  무조건 -1 보정하던 코드 제거 (Spring Pageable은 이미 0-indexed이고
  page 미지정 시 기본값이 0이라 PageRequest.of(-1, ...)로 크래시)
- 부하테스트 중 dev에서 재현 확인, 미사용 PageRequest import 정리

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mvfo9MCuQxSNoSvA18tbCY
- dev 앱 컨테이너 리소스 한도를 500m/512Mi -> 700m/700Mi로 상향
  (부하테스트로 재현한 GC 압박/probe 타임아웃/파드 재시작 대응)
- assu-dev-quota도 함께 상향

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mvfo9MCuQxSNoSvA18tbCY
@coderabbitai

coderabbitai Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: b5e53d7a-c4bd-4253-a29d-dad45bff5591

📥 Commits

Reviewing files that changed from the base of the PR and between 94d71d1 and 2f54c28.

📒 Files selected for processing (2)
  • manifest
  • src/main/java/com/assu/server/domain/review/service/ReviewServiceImpl.java
💤 Files with no reviewable changes (1)
  • src/main/java/com/assu/server/domain/review/service/ReviewServiceImpl.java

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

세 리뷰 목록 조회 API가 전달받은 Pageable을 그대로 사용합니다. 페이지 파라미터 생략 시 발생하던 음수 페이지 오류를 제거합니다. 매니페스트의 서브프로젝트 커밋 포인터도 갱신합니다.

Changes

리뷰 목록 페이지 처리 수정

Layer / File(s) Summary
Pageable 직접 전달
src/main/java/com/assu/server/domain/review/service/ReviewServiceImpl.java
checkStudentReview, checkPartnerReview, checkStoreReview에서 PageRequest.of(pageable.getPageNumber() - 1, ...) 재구성을 제거했습니다. 전달받은 Pageable을 리포지토리에 그대로 사용합니다. 미사용 PageRequest import도 제거했습니다.
서브프로젝트 커밋 포인터 갱신
manifest
서브프로젝트 커밋 참조를 4da8233d2a0931d6f1d7c8460f3c516e6ac0dc31에서 6a95304e98dc46b016343cb52621a3bb46a0054c로 변경했습니다.

Priority: ➖ Normal — Schedule this change because it fixes missing-page 500 errors across three review-list APIs and raises dev resource limits.

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

Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 2f54c

리뷰 목록 API는 page 파라미터가 없을 때 기본 첫 페이지를 정상 조회하도록 변경됩니다. 현재 확인된 병합 차단 위험은 없습니다.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning 이슈 #457은 리뷰 목록 API의 page 누락 시 500 에러 수정만 다룹니다. dev 앱 리소스 상향, ResourceQuota 변경, manifest 서브프로젝트 포인터 갱신은 연결된 이슈의 범위를 벗어납니다. dev 리소스 및 quota 변경을 별도 이슈와 pull request로 분리하고, 해당 변경을 유지하려면 관련 이슈를 연결해 요구 사항과 근거를 명시하세요.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 리뷰 목록 조회 500 에러 수정과 dev 리소스 한도 상향이라는 주요 변경 사항을 명확하게 요약합니다.
Linked Issues check ✅ Passed 이슈 #457의 요구 사항을 충족합니다. 세 리뷰 목록 API에서 잘못된 pageable.getPageNumber() - 1 보정을 제거했고, 미사용 PageRequest import도 정리했습니다. Spring Pageable의 0-based 페이지 규칙에 맞는 수정입니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/#457-review-pagination-500

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

페이지는 이제 거꾸로 걷지 않고
0번 자리에서 곧게 출발해요
리뷰 세 문도 같은 길을 쓰고
불필요한 보정은 조용히 퇴장했죠
매니페스트도 새 약속을 가리켜요

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIX/#457] 리뷰 목록 조회 API 3종 page 파라미터 생략 시 500 에러

1 participant