Go로 PostgreSQL 프록시 만들기 (53) - QA 4차: 라우팅 우회와 운영 안전성
Prepared statement 재사용으로 read-only를 우회하는 버그, side-effectful SELECT의 잘못된 라우팅, extended query timeout 사각지대 등 QA 4차에서 발견된 5건의 버그를 분석하고 수정한다.
Prepared statement 재사용으로 read-only를 우회하는 버그, side-effectful SELECT의 잘못된 라우팅, extended query timeout 사각지대 등 QA 4차에서 발견된 5건의 버그를 분석하고 수정한다.
QA 4차 수정으로 dataapi.New 시그니처가 바뀌었지만 테스트가 따라가지 못해 컴파일이 깨졌고, watcher 테스트는 time.Sleep 의존으로 race detector에서 간헐 실패했다. 릴리즈 파이프라인을 막는 2건의 테스트 블로커를 수정한다.
앞쪽 주석(/*x*/ BEGIN)이 트랜잭션/세션 상태기를 통째로 우회하고, MERGE·COPY·CALL이 reader로 빠지며, 주석/리터럴 안의 키워드가 false positive를 내는 5건의 파서·라우터 버그를 수정한다.
v1.0.0 릴리즈 직전, 전체 코드베이스를 엣지케이스까지 훑어 CopyBoth 고루틴 race, 캐시 인덱스 정합성 파손, Synthesizer 메모리 고갈 등 14건을 수정한다.
QA에서 올라온 6건의 소견 — Pool race, credential 미갱신, XFF spoofing, reader 격리 실패, 캐시 write-only, 설정 오류 — 을 분석하고 수정한다.
QA 2차 소견 5건 — boundWriter cross-pool 오염, extended cache 파라미터 무시, Pool.Close outstanding borrow, writer CB reload 누락, watcher startup race — 을 분석하고 수정한다.
QA 3차 소견 6건 — fallback 경로 cross-pool 오염, extended cache 포맷 충돌, 깨진 연결 Release, Pool.Acquire close race, boundWriter discard 누락, circuit breaker 일관성 — 을 분석하고 수정한다.
QA 3차 리포트 5건 — AST 분류가 라우팅에 미반영, 캐시 테이블 무효화 no-op, 중복 파싱 5회/요청, 헬스체크 순차 지연, splitStatements 달러쿼팅 미처리 — 의 원인과 수정 과정을 정리한다.
QA 4차 리포트 5건 — 캐시 키 네임스페이스 부재로 JSON/wire 응답 충돌, 읽기 캐시 무효화 실종, balancer 상태 초기화, HTTP 서버 lifecycle 미관리, AST 재파싱 — 의 원인과 수정 과정을 정리한다.
QA 과정에서 발견된 4건의 보안 취약점 — 캐시 충돌로 인한 개인정보 유출, 무한 재귀, 방화벽 우회, 힌트 주입 — 을 분석하고 수정한다.