You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
반면 Gotcha / Shop / Auction write 요청은 모두 Netx Saga를 공통으로 사용합니다.
운영 500 응답 시간이 Netx의 결과 대기 timeout과 일치합니다.
일반 Saga: 약 10초
상품 등록: 코드에서 sagaSync(100000, ...)을 사용해 약 100초
최근 Gotcha 500이 증가하는 동안 point decrease와 Render persona 지급 호출 수는 증가하지 않아, downstream API보다 Saga 처리/결과 경로 앞단에서 막히는 것으로 확인했습니다.
Netx의 AbstractSagaListener는 오류 후 자동 재구독하지만 RedisStreamSagaListener가 하나의 StreamReceiver 인스턴스를 계속 재사용하고 있었습니다. receiver 자체가 연결 장애 후 stale/terminal 상태가 되면 재구독해도 같은 receiver를 다시 쓰는 구조입니다.
patched Netx를 gitanimals-api에 로컬 연결한 뒤 깨끗한 Redis에서 다음 테스트를 각각 검증했습니다.
GotchaFacadeV3Test — BUILD SUCCESSFUL
RegisterProductFacadeTest — BUILD SUCCESSFUL
BuyProductFacadeTest — BUILD SUCCESSFUL
Netx 수정이 merge/release되면 gitanimals-api의 Netx 버전을 올리는 단계가 남습니다.
Progress
I traced #501 beyond the Shop UI and into the API write path.
Current findings:
normal read APIs and DB connectivity on api.gitanimals.org are healthy
Gotcha / Shop / Auction writes all share the Netx Saga path
production 500 durations match Netx result timeouts
normal Saga: about 10 seconds
product registration: about 100 seconds because it explicitly uses sagaSync(100000, ...)
while new Gotcha 500 responses increased, point-decrease and Render persona calls did not, which places the failure before downstream write calls
AbstractSagaListener resubscribes after errors, but RedisStreamSagaListener kept reusing the same StreamReceiver; if the receiver itself becomes stale/terminal after a connection failure, the restart path reuses the same broken receiver
listener 재구독 시 stale StreamReceiver를 재사용하지 않고 새 receiver를 생성
관련 RedisStreamSagaListenerTest 통과
버전 0.5.1 준비
API 적용 브랜치: oosuhada/gitanimals-api:fix/issue-501-shop
commit 749c7da — build: upgrade netx to 0.5.1
로컬 0.5.1 artifact를 연결해 dependency resolution 및 clean compile 성공
운영 장애도 아직 지속 중입니다.
Gotcha 500: 199 → 204
Gotcha 성공: 4,025에서 그대로
Auction 신규 등록: 2026-08-22 이후 여전히 없음
API process는 재시작되지 않은 동일 인스턴스
현재 남은 병목은 devxb/Netx#157 merge와 Netx 0.5.1 Maven Central release입니다. 0.5.1이 공개되면 준비해둔 API 브랜치로 별도 PR을 생성하면 됩니다.
Additional progress
The root fix and the API integration step are now prepared separately.
Netx fix PR: devxb/Netx#157
recreates the Redis StreamReceiver on listener resubscription instead of reusing a stale receiver
RedisStreamSagaListenerTest passes
prepares version 0.5.1
API integration branch: oosuhada/gitanimals-api:fix/issue-501-shop
commit 749c7da — build: upgrade netx to 0.5.1
verified dependency resolution and clean compilation against a local 0.5.1 artifact
The production incident is still active:
Gotcha 500 count: 199 → 204
Gotcha success count: still 4,025
no new Auction registrations since 2026-08-22
the API process is still the same long-running instance
The remaining blocker is merging devxb/Netx#157 and publishing Netx 0.5.1 to Maven Central. Once 0.5.1 is available, the prepared API branch can be opened as a separate PR.
Activity
git-good-w commentedon Aug 25, 2026
@Seungjun-bob
Thanks for reporting the issue!
oosuhada commentedon Aug 27, 2026
not working for me either.
oosuhada commentedon Aug 27, 2026
진행 상황
#501을 Shop UI 문제로만 보지 않고 API write 경로까지 추적해봤습니다.
현재 확인된 내용은 다음과 같습니다.
api.gitanimals.org의 일반 read API와 DB 연결은 정상입니다.sagaSync(100000, ...)을 사용해 약 100초AbstractSagaListener는 오류 후 자동 재구독하지만RedisStreamSagaListener가 하나의StreamReceiver인스턴스를 계속 재사용하고 있었습니다. receiver 자체가 연결 장애 후 stale/terminal 상태가 되면 재구독해도 같은 receiver를 다시 쓰는 구조입니다.이 부분을 수정하는 Netx PR을 생성했습니다.
StreamReceiver를 생성하도록 수정patched Netx를
gitanimals-api에 로컬 연결한 뒤 깨끗한 Redis에서 다음 테스트를 각각 검증했습니다.GotchaFacadeV3Test— BUILD SUCCESSFULRegisterProductFacadeTest— BUILD SUCCESSFULBuyProductFacadeTest— BUILD SUCCESSFULNetx 수정이 merge/release되면
gitanimals-api의 Netx 버전을 올리는 단계가 남습니다.Progress
I traced #501 beyond the Shop UI and into the API write path.
Current findings:
api.gitanimals.orgare healthysagaSync(100000, ...)AbstractSagaListenerresubscribes after errors, butRedisStreamSagaListenerkept reusing the sameStreamReceiver; if the receiver itself becomes stale/terminal after a connection failure, the restart path reuses the same broken receiverI opened a Netx fix for this behavior:
StreamReceiveron resubscriptionI also wired the patched Netx into
gitanimals-apilocally and verified the following against clean Redis instances:GotchaFacadeV3Test— BUILD SUCCESSFULRegisterProductFacadeTest— BUILD SUCCESSFULBuyProductFacadeTest— BUILD SUCCESSFULAfter the Netx fix is merged/released, the remaining step is updating the Netx version used by
gitanimals-api.oosuhada commentedon Aug 27, 2026
추가 진행 상황
근본 수정과 API 적용 준비를 분리해서 마무리했습니다.
devxb/Netx#157StreamReceiver를 재사용하지 않고 새 receiver를 생성RedisStreamSagaListenerTest통과0.5.1준비oosuhada/gitanimals-api:fix/issue-501-shop749c7da—build: upgrade netx to 0.5.1운영 장애도 아직 지속 중입니다.
현재 남은 병목은
devxb/Netx#157merge와 Netx0.5.1Maven Central release입니다. 0.5.1이 공개되면 준비해둔 API 브랜치로 별도 PR을 생성하면 됩니다.Additional progress
The root fix and the API integration step are now prepared separately.
devxb/Netx#157StreamReceiveron listener resubscription instead of reusing a stale receiverRedisStreamSagaListenerTestpasses0.5.1oosuhada/gitanimals-api:fix/issue-501-shop749c7da—build: upgrade netx to 0.5.1The production incident is still active:
The remaining blocker is merging
devxb/Netx#157and publishing Netx0.5.1to Maven Central. Once 0.5.1 is available, the prepared API branch can be opened as a separate PR.devxb commentedon Aug 29, 2026
안녕하세요
Watchdog 장애로 레디스 커넥션이 끊겨서 발생한 이슈로 해소되었습니다.
이용해주셔서 감사드립니다