Skip to content

fix: account-scoped-session-recovery/#224 - #226

Merged
Finefinee merged 3 commits into
feat/android-youtube-preferences/#223from
fix/account-scoped-session-recovery/#224
Sep 20, 2026
Merged

Finefinee merged 3 commits into
feat/android-youtube-preferences/#223from
fix/account-scoped-session-recovery/#224

Conversation

@Finefinee

@Finefinee Finefinee commented Sep 17, 2026

Copy link
Copy Markdown
Member

PR을 만든 이유

  • Android는 프로세스 종료 뒤 남은 방송 세션을 정리하려면 세션 ID와 최초 생성 시에만 발급되는 owner token을 복구해야 합니다.
  • 기존 저장 방식은 복구 기록을 계정·서버 구분 없이 하나의 키에 보관해, 다른 계정이나 다른 서버의 세션을 잘못 읽을 수 있었습니다.
  • 기존 설치본의 legacy 기록에는 계정 정보가 없어 현재 로그인 계정에 바로 귀속시키면, 계정 불일치 403 이후 원래 계정의 owner token을 잃고 409 session_already_exists에서 복구하지 못할 수 있습니다.

변경 내용

  • 새로 생성한 방송 세션의 암호화 복구 기록을 서버 URL과 JWT sub별로 분리했습니다.
  • 앱 재시작 시 현재 계정·서버 범위에 저장된 잔여 세션만 owner token과 함께 정리합니다.
  • 네트워크 오류와 5xx 삭제 실패에서는 복구 기록을 보존해 다음 실행에서 다시 시도합니다.
  • 계정 범위가 확인된 기록은 204, 404, 403에서 제거합니다.
  • 계정을 식별할 수 없는 legacy 기록은 특정 계정 범위로 미리 이동하지 않습니다. 현재 계정의 POST /sessions409 session_already_exists로 거부된 경우에만 legacy owner token으로 삭제를 시도하고, 204·404일 때 기록을 제거한 뒤 세션 생성을 재시도합니다.
  • Legacy 삭제가 계정 불일치 403이면 owner token을 보존합니다. 다른 계정이 POST /sessions에 성공하면 legacy 기록을 읽거나 삭제하지 않습니다.
  • 기존 방송 API 계기 테스트가 새 JWT sub 요구를 통과하도록 유효한 테스트 JWT를 사용하게 수정했습니다.
  • 계정·서버 격리, legacy 계정 전환, 403 보존 및 세션 생성 재시도에 대한 회귀 테스트를 추가했습니다.

확인 방법

  • ./gradlew :app:compileDebugAndroidTestKotlin :app:testDebugUnitTest
  • ANDROID_SERIAL=emulator-5554 ./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.framework.innolive.feature.live.SessionRecoveryApiTest,com.framework.innolive.feature.live.BroadcastApiFlowTest,com.framework.innolive.feature.live.BroadcastPreparationTest
  • Pixel_10 에뮬레이터에서 관련 계기 테스트 19개 통과
  • 테스트 HTTP 로그에서 다른 계정은 POST 201, 원래 계정 복구는 POST 409 → DELETE 204 → POST 201, 계정 불일치는 POST 409 → DELETE 403 순서를 확인
  • 실제 서버 API와 최신 변경의 실기기 실행은 확인하지 않음

계약 영향

  • 없음. 기존 /sessions/{id} 삭제 API와 X-Session-Owner-Token 헤더를 유지합니다.

Closes #224

@Finefinee
Finefinee force-pushed the fix/account-scoped-session-recovery/#224 branch from 8fa31a4 to 93febe6 Compare September 17, 2026 11:50
@Finefinee
Finefinee changed the base branch from main to feat/android-youtube-preferences/#223 September 17, 2026 11:50
@Finefinee
Finefinee force-pushed the fix/account-scoped-session-recovery/#224 branch from 93febe6 to 3e5c9d5 Compare September 17, 2026 11:53
@Finefinee
Finefinee marked this pull request as ready for review September 20, 2026 05:55
@Finefinee
Finefinee requested a review from a team as a code owner September 20, 2026 05:55
@Finefinee
Finefinee merged commit 8054873 into feat/android-youtube-preferences/#223 Sep 20, 2026
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: 계정별 잔여 방송 세션 복구 기록 분리

1 participant