피드로 돌아가기
Node.js 0.10.2 (Stable)
Node.js BlogNode.js Blog
Backend

Node.js가 0.10.2 버전 업그레이드로 TLS 핸들링, 타이머 오류, 스트림 처리의 13개 버그를 수정

Node.js 0.10.2 (Stable)

2013년 3월 28일3beginner

Context

Node.js 0.10.x 시리즈에서 TLS 연결 처리 중 SSL_ERROR_ZERO_RETURN 미처리, 타이머 계산의 오프바이원 오류, 스트림 Transform의 특정 조건 하에서의 정체 현상 등 여러 핵심 모듈에서 버그가 존재했다.

Technical Solution

  • TLS: SSL_ERROR_ZERO_RETURN 에러를 명시적으로 핸들링하고 C++ 메서드 호출 전 에러 검증 추가
  • 타이머: Timeout._when 프로퍼티 계산 제거, ms 단위 오프바이원 오류 수정, enroll() 함수에서 signed int32 오버플로우 처리
  • 스트림: Transform 모듈의 특정 조건에서의 정체 현상 해결, 늦은 'readable' 이벤트 리스너 처리, 제로 길이 쓰기 시 조기 종료 방지
  • 암호화: getCiphers()가 비SSL 암호화 방식 반환하도록 수정, randomBytes() 크기 인수 검증 추가
  • 자식 프로세스: 동일 핸들 중복 발행 방지, UTF-8 데이터 전송 수정
  • 의존성: npm 1.2.15로 업그레이드, libuv 0.10.3으로 업그레이드

Key Takeaway

Node.js 코어 모듈(TLS, 타이머, 스트림)의 버그는 프로덕션 환경의 안정성을 직접 위협하므로, 각 모듈별 경계 조건(오버플로우, 에러 상태, 레이스 컨디션)에 대한 철저한 테스트와 수정이 필수다.


Node.js를 사용하는 프로덕션 환경에서는 TLS 기반 연결, 고빈도 타이머 사용, 스트림 Transform 처리가 포함된 경우

0.

1

0.2 이상으로 즉시 업그레이드해야 SSL 연결 끊김, 타이밍 오류, 데이터 처리 정체를 방지할 수 있다.

원문 읽기