fix(ext): v0.5.8 false positive zombie socket disconnect bug resolve (timestamp replace setTimeout)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# WebSocket 좀비 커넥션 해결 및 통신망 메모리 누수 구조 패치
|
||||
|
||||
- **시간**: 2026-03-23 21:09~21:20
|
||||
- **Commit**: TBD
|
||||
- **Commit**: `ecebec3`
|
||||
- **Vikunja**: #510 → done
|
||||
|
||||
## 결정 사항
|
||||
|
||||
16
docs/devlog/entries/20260323-002.md
Normal file
16
docs/devlog/entries/20260323-002.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Cross-Project DOM Observer Leakage 해결
|
||||
|
||||
- **시간**: 2026-03-23 22:00~22:45
|
||||
- **Commit**: `TBD`
|
||||
- **Vikunja**: #TBD → done
|
||||
|
||||
## 확인된 사실
|
||||
- Discord 신호 누락이 아닌, 다중 원격 환경에서의 포트 덮어쓰기 문제로 인한 **교차 프로젝트 신호 오염(Leakage)**이었음.
|
||||
|
||||
## 삽질 / 트러블슈팅
|
||||
- 처음에는 디스코드 봇(`bot.py`)이나 익스텐션의 `step_type` 매핑 로직 누락인 줄 알고 코드를 탐색했으나, 실제 DOM observer 스크립트에 하드코딩된 Port 변수가 문제의 원인임을 파악함.
|
||||
- 다중 원격 컴퓨터 환경 중 포트 포워딩(`12345` 충돌 우회)으로 인한 이슈를 해결하기 위해 `vscode.env.asExternalUri`를 도입. 로컬에 매핑된 최종 확정 포트를 알아냄.
|
||||
|
||||
## 결정 사항
|
||||
- DOM Status Bar(`tooltip`)를 일종의 단방향 IPC(Inter-Process Communication) 대용으로 사용하기로 결정함.
|
||||
- Extension Host가 렌더러(DOM Observer)에게 안전하고 해당 창에만 격리(Window-isolated)된 방식으로 포트 번호를 전달할 수 있음. 전역 HTML 파일 패치의 한계를 우아하게 극복함.
|
||||
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