Skip to content

fix: 커뮤니티 스피너 고착 + releaseToken 거짓 경보 - #309

Merged
seizeh merged 1 commit into
mainfrom
fix/audit-followups
Aug 10, 2026
Merged

fix: 커뮤니티 스피너 고착 + releaseToken 거짓 경보#309
seizeh merged 1 commit into
mainfrom
fix/audit-followups

Conversation

@seizeh

@seizeh seizeh commented Aug 10, 2026

Copy link
Copy Markdown
Owner

감사 후속 두 건.

① 커뮤니티 스피너가 영원히 도는 경로

최초 로드(스피너 켜짐)가 비행 중일 때 상세에서 돌아오며 silent 갱신이 _reqId 를 가져가면, 최초 로드의 응답은 최신성 가드(myReq != _reqId)에서 버려진다. 이때 silent 갱신마저 실패하면 "조용한 실패는 목록 유지" 규칙에 따라 그냥 반환해 버려 _loading 을 풀 사람이 아무도 남지 않는다 → 스피너 영구 회전.

스피너가 떠 있다는 건 그 silent 요청이 최초 로드를 가로챘다는 뜻이므로, 그 경우엔 오류 화면으로 마무리한다.

_loading 이 꺼져 있는 평시의 조용한 갱신 실패는 종전대로 목록을 유지한다.

push.releaseToken 거짓 경보

세션이 이미 회수된 경우(다른 기기 비밀번호 변경·정지·탈퇴)의 42501 not_authenticated정상 결과다. app.uid()token_version 을 보므로 부를 자격이 없고, 기기 토큰은 DB 트리거 users_revoke_device_tokens(pmdb 20260810092000)가 이미 껐다. 이걸 오류로 올리면 있지도 않은 누수를 알리는 거짓 경보가 된다.

그 밖의 실패(오프라인 로그아웃 등)는 여전히 진짜 누수이므로 report 를 유지한다 — #237 이 얼마나 자주 재현되는지는 계속 봐야 한다.

운영 로그 실측: push.releaseToken 은 42501 1건(2026-08-06)이 전부다.

테스트

flutter analyze 클린, 전체 326개 통과.

①에 회귀 테스트는 넣지 않았다 — 커뮤니티 탭은 위젯 테스트 하네스도 피드 리포지토리 대역도 없어서, 한 줄 가드를 위해 하네스를 새로 세우는 비용이 이득보다 크다고 판단했다.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

전체 라인 커버리지: 20.5% (4291/20909)

이 PR 의 변경 파일:

파일 커버리지
lib/screen/tabs/community_tab.dart 🔴 0% (2/471)
lib/services/push_service.dart 🔴 3% (2/79)

■ 커뮤니티 스피너가 영원히 도는 경로

최초 로드(스피너 켜짐)가 비행 중일 때 상세에서 돌아오며 silent 갱신이
_reqId 를 가져가면, 최초 로드의 응답은 최신성 가드에서 버려진다. 이때
silent 갱신마저 실패하면 "조용한 실패는 목록 유지" 규칙에 따라 그냥
반환해 버려 _loading 을 풀 사람이 아무도 남지 않는다.

스피너가 떠 있으면 그 silent 요청이 곧 최초 로드를 가로챈 것이므로
오류 화면으로 마무리한다.

■ push.releaseToken

세션이 이미 회수된 경우(다른 기기 비밀번호 변경·정지·탈퇴)의 42501 은
정상이다 — app.uid() 가 token_version 을 보므로 부를 자격이 없고, 기기
토큰은 DB 트리거(users_revoke_device_tokens)가 이미 껐다. 이걸 오류로
올리면 있지도 않은 누수를 알리는 거짓 경보가 된다.

그 밖의 실패(오프라인 로그아웃 등)는 여전히 진짜 누수라 report 유지 —
#237 이 얼마나 자주 재현되는지는 계속 봐야 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@seizeh
seizeh force-pushed the fix/audit-followups branch from 83ca83c to 0a92e4e Compare August 10, 2026 02:40
@seizeh
seizeh merged commit b74ceba into main Aug 10, 2026
1 check passed
@seizeh
seizeh deleted the fix/audit-followups branch August 10, 2026 02:48
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