Skip to content

[HSC-423] admin log-feature dispatch rejection 정책 변경 및 reject 계측 추가#278

Merged
tkv00 merged 2 commits into
mainfrom
perf/HSC-423
Apr 1, 2026
Merged

[HSC-423] admin log-feature dispatch rejection 정책 변경 및 reject 계측 추가#278
tkv00 merged 2 commits into
mainfrom
perf/HSC-423

Conversation

@tkv00
Copy link
Copy Markdown
Contributor

@tkv00 tkv00 commented Apr 1, 2026

📝작업 내용

  • Burst 구간에서 adminLogFeatureTaskExecutor가 포화되면 CallerRunsPolicy 때문에 userLogTaskExecutor가 느린 admin HTTP 호출을 대신 수행하고 있었다.

  • fallback을 끊고, admin dispatch enqueue 결과를 별도 metric으로 관측할 수 있게 만드는 작업

구분 변경 내용 목적
rejection policy CallerRunsPolicy -> AbortPolicy 포화 순간 caller thread 오염 차단
dispatch metric holliverse.userlog.admin_log_feature.dispatch 추가 enqueue 성공/실패 관측
user-log 처리 TaskRejectedException catch 후 metric/log 기록 reject를 명시적 신호로 노출
flowchart LR
    A["userLogTaskExecutor"] --> B["dispatch()"]
    B --> C["adminLogFeatureTaskExecutor full"]
    C --> D["AbortPolicy"]
    D --> E["TaskRejectedException"]
    E --> F["dispatch rejected metric"]

    style D fill:#eef8ef,stroke:#5a9c67
    style F fill:#eef4ff,stroke:#5b80b7
Loading

👀변경 사항

파일 변경 내용
src/main/java/site/holliverse/shared/config/runtime/CustomerRuntimeInfraConfiguration.java adminLogFeatureTaskExecutor rejection policy 변경
src/main/java/site/holliverse/shared/monitoring/CustomerMetrics.java admin dispatch enqueue metric 추가
src/main/java/site/holliverse/customer/application/usecase/log/UserLogService.java dispatch reject 처리 및 로그/metric 기록 추가

추가 metric

metric tag 의미
holliverse.userlog.admin_log_feature.dispatch result="enqueued" admin dispatch enqueue 성공
holliverse.userlog.admin_log_feature.dispatch result="rejected" admin dispatch enqueue reject

기대 효과

  • admin-log-feature 포화 시 user-log executor가 다시 긴 HTTP 호출을 수행하지 않음
  • reject를 명시적으로 관측 가능
  • 다음 Burst에서 reject와 DB 유실의 상관관계를 분리해서 확인 가능

🎫 Jira Ticket

  • Jira Ticket: HSC-423

#️⃣관련 이슈


@tkv00 tkv00 added 🔥 priority: P0 즉시 처리 필요(서비스/데모 블로커) ⚡ perf 성능 개선(쿼리/캐시/병목 제거 등) 🏷️ release 릴리즈 준비/버전 태깅/릴리즈 노트/릴리즈 브랜치 작업 release:patch 버전 patch bump: X.Y.(Z+1) deploy:api-server 배포 대상: customer-api Admin Team labels Apr 1, 2026
@github-actions github-actions Bot added Customer Team ⚠️ priority: P1 빠른 처리 필요(주요 기능 영향) 🗂️ area: BE 백엔드 영역 labels Apr 1, 2026
@github-actions github-actions Bot changed the title admin log-feature dispatch rejection 정책 변경 및 reject 계측 추가 [HSC-423] admin log-feature dispatch rejection 정책 변경 및 reject 계측 추가 Apr 1, 2026
@tkv00 tkv00 changed the base branch from dev to main April 1, 2026 01:25
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

🛡️ Code Review Report ## 1. 🔍 요약 (Summary) 이번 PR은 Admin 로그 기능을 별도의 스레드 풀(adminLogFeatureTaskExecutor)을 사용하는 비동기 방식으로 분리하고, 작업 거부(TaskRejectedException) 시의 예외 처리와 메트릭 기록 로직을 추가했습니다. 전반적으로 아키텍처 가이드라인을 잘 준수하고 있으나, 예외 발생 시 로그 기록이 누락된 점이 확인되었습니다. ## 2. 🛑 Blocking Issues (Must Fix) - [위반 규칙]: 로깅 정책 준수 - [위치]: UserLogService.java (Line 131-133) - [문제 이유]: PR 설명에 명시된 것과 달리 TaskRejectedException 발생 시 메트릭만 기록되고 실제 로그 출력 로직이 누락되어 있어 장애 발생 시 원인 파악이 어려울 수 있습니다. - [해결 제안]: catch 블록 내에 log.warn을 추가하여 시스템 포화 상태 및 거부된 요청 정보를 명시적으로 기록하십시오.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 1, 2026

🧪 Test Coverage Report (JaCoCo)

overall__line overall__branch changed__line changed__branch

기준(soft, workflow는 실패 안 함): Overall line 70% / branch 50%, Changed line 80% / branch 60% · Generated: 2026-04-01 01:35 UTC

Scope Line Branch Line Graph Branch Graph Verdict
Overall 40.3% 29.4% ████████░░░░░░░░░░░░ ██████░░░░░░░░░░░░░░ ⚠️⚠️
Changed 0.0% 0.0% ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░ ⚠️⚠️

Package line spark (sample): ▃▂▁▂▂▄▄·▇█▁▆▆▆·▆▁▁▆█▇▃▁▁▁██▁▁▃
Package branch spark (sample): ▃▁·▁▁·▁·▇··▅▆▅·▅▁▁▅▇▇▂▁·▁·█▁▁▁

📦 Package coverage (worst 10)

Rank Package Line Branch Lines Line Graph Branch Graph
1 site.holliverse.shared.monitoring 0.0% N/A 83 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.customer.application.usecase.log 0.0% 0.0% 75 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
3 site.holliverse.customer.coupon.application 0.0% 0.0% 61 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
4 site.holliverse.infra.kafka.consumer 0.0% 0.0% 44 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
5 site.holliverse.customer.integration.fastapi 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
6 site.holliverse.customer.integration.external 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
7 site.holliverse.customer.application.usecase.counsel 0.0% 0.0% 14 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
8 site.holliverse.customer.coupon.web 0.0% 0.0% 12 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
9 site.holliverse.shared.config.runtime 0.0% N/A 11 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
10 site.holliverse.customer.web.util 0.0% 0.0% 8 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

🧨 Lowest coverage classes (worst 10)

Rank Class Line Branch Lines Line Graph Branch Graph
1 site.holliverse.shared.monitoring.CustomerMetrics 0.0% N/A 56 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.customer.application.usecase.log.UserLogService 0.0% 0.0% 56 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
3 site.holliverse.infra.kafka.consumer.RecommendationKafkaConsumer 0.0% 0.0% 44 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
4 site.holliverse.customer.application.usecase.recommendation.RecommendationKafkaConsumeUseCase 0.0% 0.0% 42 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
5 site.holliverse.admin.application.usecase.CalculateLogChurnScoreService 0.0% 0.0% 38 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
6 site.holliverse.admin.application.usecase.CalculateChurnScoreService 0.0% 0.0% 37 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
7 site.holliverse.customer.coupon.application.UseMemberCouponUseCase 0.0% 0.0% 34 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
8 site.holliverse.admin.application.usecase.ChurnRiskReason$ReasonCode 0.0% 0.0% 31 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
9 site.holliverse.customer.integration.fastapi.FastApiRecommendationClient 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
10 site.holliverse.customer.integration.external.AdminLogFeaturesClient 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
🧩 Changed files coverage breakdown (3 files)
File Line Branch Lines Verdict Line Graph Branch Graph
src/main/java/site/holliverse/customer/application/usecase/log/UserLogService.java 0.0% 0.0% 56 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/monitoring/CustomerMetrics.java 0.0% N/A 56 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/config/runtime/CustomerRuntimeInfraConfiguration.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

🔎 HTML 리포트: Actions → Artifacts → jacoco-html · XML: jacoco-xml

@tkv00 tkv00 merged commit f662f28 into main Apr 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Admin Team 🗂️ area: BE 백엔드 영역 Customer Team deploy:api-server 배포 대상: customer-api ⚡ perf 성능 개선(쿼리/캐시/병목 제거 등) 🔥 priority: P0 즉시 처리 필요(서비스/데모 블로커) ⚠️ priority: P1 빠른 처리 필요(주요 기능 영향) release:patch 버전 patch bump: X.Y.(Z+1) 🏷️ release 릴리즈 준비/버전 태깅/릴리즈 노트/릴리즈 브랜치 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant