fix(ext): v0.5.8 false positive zombie socket disconnect bug resolve (timestamp replace setTimeout)
This commit is contained in:
12
docs/devlog/entries/20260324-001.md
Normal file
12
docs/devlog/entries/20260324-001.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# v0.5.6 좀비 커넥션 패치 회귀 오류 해결 (v0.5.8 반영)
|
||||
|
||||
- **시간**: 2026-03-23 23:10 ~ 2026-03-24 07:05
|
||||
- **Commit**: `TBD`
|
||||
- **Vikunja**: 신규 추가 예정
|
||||
|
||||
## 결정 사항
|
||||
- **False Positive 멈춤 현상 원인 규명**: v0.5.6에서 추가된 `pongTimeoutTimer` (10초 타임아웃)가 VS Code 확장 내부의 일시적인 Event Loop 블로킹 발생 시 네트워크 I/O(`pong` 응답)보다 먼저 소켓을 강제 종료하고 있었습니다. 이 때문에 멀쩡한 연결이 끊어지고 재연결 지연 페널티가 누적되어 최대 60초까지 응답 불가(멈춤) 상태에 빠지는 현상이 발견되었습니다.
|
||||
- **해결 방안 선택 (타임스탬프 검증)**: 타이머 동시성 경합을 유발하는 `setTimeout` 방식을 전면 폐기하고, 기존의 `setInterval` (25초 주기) 하트비트 루프 내부에서 `ws.on('pong')`이 갱신하는 `lastPongTime`을 대조(`Date.now() - lastPongTime > 60000`)하는 방식으로 변경했습니다. 이를 통해 Event Loop가 지연되더라도 I/O 이벤트를 먼저 수확한 후에 안전하게 판독할 수 있어 오진단(False Positive)을 원천 차단하면서도 좀비 커넥션을 방지했습니다.
|
||||
|
||||
## 미완료
|
||||
- 없음 (v0.5.8 VSIX 컴파일 성공 및 배포 완료)
|
||||
Reference in New Issue
Block a user