Skip to content

수신인 조회 실패가 receiverListFlow 미처리 예외로 전파 — 소비 화면 앱 크래시 #884

Closed

Description

@OnlyReadOneBook

📜 Overview (Required)

수신인 목록 조회가 실패하면 receiverListFlow가 예외를 그대로 흘려보내, 이 flow를 수집하는 화면이 미처리 예외로 앱 크래시한다. 타임레터 작성 → 수신자 선택 화면 진입으로 재현했다 (PR #771 HEAD a1e25a1 = develop b834c11 동일 코드, Pixel 7 에뮬레이터 · Android 15 · 오프라인, 2026-08-23 03:42 실측).

재현

  1. 네트워크 불가 상태(비행기 모드) — 세션 만료(401)로도 같은 계열 크래시 기록 있음
  2. 타임레터 작성 화면 → 수신자 카드 탭
  3. 수신자 선택 화면 진입 직후 프로세스 종료 (스낵바·오류 화면 없이 런처로 이탈)

크래시 기록 — dropbox data_app_crash 2026-08-23 03:42:41

java.net.UnknownHostException: Unable to resolve host "afternote.kro.kr"
    at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:580)
    ...
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException:
      [StandaloneCoroutine{Cancelling}, Dispatchers.Main.immediate]

원인 — 코어 레이어

core/data/.../UserRepositoryImpl.kt:43

override val receiverListFlow: Flow<List<Receiver>> =
    receiverRefreshRevision.map { getReceivers() }

무보호 네트워크 호출이라 조회 실패가 flow 예외로 전파된다. 소비자(RecipientListViewModel의 stateIn)에 catch가 없으면 viewModelScope가 죽고 프로세스가 종료된다. 이 이슈의 범위는 코어에서 예외를 격리해 크래시 근원을 제거하는 것이다 — 실패를 던지지 말고 값으로 표현(예: 실패 상태 포함 모델 또는 최소한 flow 단 catch)해 소비 화면이 살아서 오류를 표시할 수 있게 한다.

같은 기기 dropbox에 2026-08-21 17:16 ApiException: 인증되지 않은 요청입니다.(401) uncaught 크래시도 남아 있다 — 오프라인뿐 아니라 세션 만료에서도 같은 경로가 앱을 죽인다.

📌 Child Issue(Optional)

No response

📍 Note (Optional)

Activity

  1. changed the title [-]fix(timeletter,core): 수신자 선택 화면 진입 시 수신인 조회 실패가 미처리 예외로 앱 크래시[/-] [+]fix(core): 수신인 조회 실패가 receiverListFlow 미처리 예외로 전파 — 소비 화면 앱 크래시[/+] on Aug 22, 2026
  2. changed the title [-]fix(core): 수신인 조회 실패가 receiverListFlow 미처리 예외로 전파 — 소비 화면 앱 크래시[/-] [+]수신인 조회 실패가 receiverListFlow 미처리 예외로 전파 — 소비 화면 앱 크래시[/+] on Aug 28, 2026
  3. added a commit that references this issue on Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:core공용 코어·네트워크 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions