Skip to content

measure: @Async 풀 백프레셔 H1 재측정 — 큐가 안 자란 이유가 「막혀서」가 아니었다 - #704

Merged
Khyojae merged 1 commit into
mainfrom
measure/async-pool-backpressure-h1
Sep 9, 2026
Merged

Khyojae merged 1 commit into
mainfrom
measure/async-pool-backpressure-h1

Conversation

@Khyojae

@Khyojae Khyojae commented Sep 9, 2026

Copy link
Copy Markdown
Member

결과가 가설보다 나빴다

H1(「AI 정지 시 @Async 큐가 자라는가」)을 재측정했다. 큐가 전혀 안 자란다 — 그런데 이유가 「막혀서」가 아니라 「@Async 가 applicationTaskExecutor 를 아예 안 타서」 였다.

Executor 타입 빈이 둘(applicationTaskExecutor·taskScheduler)이라, 이름 없는 @Async 가 SimpleAsyncTaskExecutor(요청마다 스레드를 무제한 생성)로 조용히 폴백하고 있었다.

원 가설(무한 큐)보다 심각할 수 있는 결함이다 — 큐가 안 자란 게 아니라 큐가 없었다.

→ #684 등록 후 수정 완료. 🔴 그 수정 커밋은 이 PR에 없다 — 이미 PR #685 로 main 에 머지됐고, 브랜치 분할 시 git cherry patch-id 로 걸러냈다.

부수로 드러난 것

  • 문서 드리프트: #582(계측 채널 부재)가 이미 fix(#582): applicationTaskExecutor를 non-lazy 빈으로 재구현 (커밋 전 유실분 복구) #667 로 해결돼 있었는데 문서엔 미해결로 남아 있었다. 되살아난 채널로 이번 측정이 가능했다
  • H2·H3 는 재현됐다 — 2026-08-28 원 라운드와 일관(세션 FAILED 전이 2.74.2초 · 서킷 OPEN 5.86.4초)
  • rig 의 로깅 경합 버그도 고쳐 이번엔 15/15 요청이 유실 없이 잡혔다
  • 로컬 공유 MySQL 의 flyway_schema_history 에서 V11/V13 체크섬이 뒤바뀐 채로 있어 백엔드가 기동조차 못 했다 — flyway repair 로 해결(실제 스키마는 정상, 메타데이터만 재정렬)

재현 방식

원본 rig 은 병합 안 된 브랜치(measure/async-pool-backpressure-r2)에 있어 git show 로만 추출해 재현했다 — 그 브랜치를 merge 하지 않았다.


📌 브랜치 분할 안내

feat/be07-pattern-analysis-skeleton 에 쌓여 있던 미머지 35커밋을 10개 주제 브랜치로 쪼갠 것 중 하나다(원 브랜치의 PR #621 은 이미 머지됐고 그 뒤 무관한 작업이 계속 쌓였다). 10개를 순서대로 재적용한 결과가 원본과 파일 단위로 일치함을 확인했다. 전체 머지 순서는 #699 본문 참조.

🤖 Generated with Claude Code

https://claude.ai/code/session_0123dPPCCeyCTj6Xvx6cUhDC

#582(계측 채널 부재)가 이미 #667로 해결돼 있었음을 확인하고(문서 드리프트),
되살아난 채널로 H1(AI 정지 시 큐가 자라는가)을 재측정했다. 결과: 큐가 전혀 안
자란다 — 그런데 이유가 "막혀서"가 아니라 "@async가 applicationTaskExecutor를
아예 안 타서"였다. Executor 타입 빈이 둘(applicationTaskExecutor·taskScheduler)이라
이름 없는 @async가 SimpleAsyncTaskExecutor(무제한 스레드 생성)로 조용히 폴백하고
있었다 — 원 가설(무한 큐)보다 심각할 수 있는 결함으로, 이슈 #684 등록 후 별도
커밋(c5bfc55)으로 수정 완료.

H2(서킷브레이커 개입)·H3(세션 FAILED 전이)는 2026-08-28 원 라운드와 일관되게
재현(전이 2.7~4.2초·서킷 OPEN 5.8~6.4초). rig의 로깅 경합 버그도 고쳐 이번엔
15/15 요청이 전부 유실 없이 잡혔다. 원본 rig는 병합 안 된 브랜치
(measure/async-pool-backpressure-r2)에서 git show로만 추출해 재현했다(merge 안 함).

부수 발견: 로컬 공유 MySQL의 flyway_schema_history가 V11/V13(goals·trainer_assignments)
체크섬이 뒤바뀐 채로 있어 백엔드가 기동 자체를 못 했다 — flyway repair로 해결(실제
스키마는 이미 정상, 메타데이터만 재정렬).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jrgkFgxLjQtjJbDHX7Ue9
(cherry picked from commit 9aaa8d5)
@coderabbitai

coderabbitai Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 57 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 5450f8d5-087b-4431-9443-1fd857bd6bff

📥 Commits

Reviewing files that changed from the base of the PR and between f560dd4 and bbbff01.

⛔ Files ignored due to path filters (7)
  • loadtest/results/async-pool-2026-09-07/rep1_A_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/rep2_B_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/rep3_B_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/rep4_A_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/rep5_A_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/rep6_B_poll.log is excluded by !**/*.log
  • loadtest/results/async-pool-2026-09-07/run.log is excluded by !**/*.log
📒 Files selected for processing (15)
  • docs/decisions/async-pool-backpressure-experiment.md
  • docs/decisions/async-pool-queue-instrumentation.md
  • docs/decisions/experiment-inventory.md
  • loadtest/results/async-pool-2026-09-07/README.md
  • loadtest/results/async-pool-2026-09-07/admin_token.txt
  • loadtest/results/async-pool-2026-09-07/emails.txt
  • loadtest/results/async-pool-2026-09-07/pool_tokens.txt
  • loadtest/results/async-pool-2026-09-07/rep1_A_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/rep2_B_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/rep3_B_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/rep4_A_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/rep5_A_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/rep6_B_session_ids.txt
  • loadtest/results/async-pool-2026-09-07/run_async_pool_arms.sh
  • loadtest/results/async-pool-2026-09-07/tokens.txt

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

Comment @coderabbitai help to get the list of available commands.

@Khyojae

Khyojae commented Sep 9, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Khyojae
Khyojae merged commit 1e0c729 into main Sep 9, 2026
3 checks passed
@Khyojae
Khyojae deleted the measure/async-pool-backpressure-h1 branch September 9, 2026 16:07
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.

1 participant