Skip to content

[Test] OpenProxy 라우팅·세션 계약과 설치 설정 기록 - #355

Merged
Gimini-3 merged 10 commits into
developfrom
test/openproxy-routing-session-contract
Sep 27, 2026
Merged

Gimini-3 merged 10 commits into
developfrom
test/openproxy-routing-session-contract

Conversation

@Gimini-3

@Gimini-3 Gimini-3 commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

작업 내용

Closes #354

기존 Rocky Linux 9.7 x86_64 OpenSQL 3노드에서 OpenProxy A/B의 라우팅·세션 계약과 HA 시험에 필요한 설치·실행 설정을 검증했습니다. 시험 SQL은 0행 UPDATE와 rollback을 사용했고, DB 데이터·라이선스·앱 운영 URL을 영구 변경하지 않았습니다.

검증 범위와 구현

  • openSqlOpenProxyContractTest: 자동 커밋 조회, JDBC read-only/read-write 트랜잭션, Worker 잠금 조회, prepareThreshold=5/1 반복, SQL-level PREPARE/EXECUTE/DEALLOCATE, JVM·DB 날짜 경계를 A/B에서 별도로 확인합니다.
  • capture_live_ha_contract.sh: 승인된 GCP 계정·프로젝트인지 먼저 확인하고, 기존 세 VM의 컨테이너·호스트·프록시 관리값을 자동 수집합니다.
  • capture_ha_contract.py: OpenSQL/OpenProxy/Patroni/etcd/PostgreSQL 버전, etcd 실행 멤버와 시간 설정 입력, Patroni 동적 설정, OpenProxy 설치·관리 설정, Docker/호스트 실행 감독과 OS 시간대를 허용 목록으로 비식별화합니다. 노드·관리 결과의 canonical SHA-256과 호스트명 없는 JUnit 요약을 생성합니다.
  • 한국어 실측 보고서에 최초 10개 계약 완료 기준의 증거·한계, 후속 장애 시험의 사전 통과·경고·중단 기준을 기록했습니다.

실측 결과

  • A/B 전체 JDBC 계약 시험 5개 성공, 실패 0; Python 수집기 단위 시험 11개 성공, 실패 0.
  • 자동 커밋 조회와 JDBC read-only 조회는 standby, 명시적 쓰기 트랜잭션과 빈 결과 FOR UPDATE SKIP LOCKED는 primary에 도달했습니다. Spring @Transactional 전체 경로를 이 시험에서 실행한 것은 아닙니다.
  • pgJDBC 프로토콜 prepared statement는 A/B × prepareThreshold=5/1 × 15회에서 결과·server prepare·서버 준비문 존재를 확인했습니다. SQL-level 준비문은 별도로 같은 트랜잭션 안에서 통과했습니다.
  • 세 노드의 OpenSQL 제품 버전은 v3.17.8.7이고 etcd 실행 멤버는 3개(정족수 2)였습니다. JVM·DB는 Asia/Seoul, 세 VM·컨테이너는 UTC+0000에서 양 프록시의 자정 경계 왕복이 일치했습니다.
  • 공개 스냅샷에는 계정·프로젝트 ID, 내부 IP, 암호, 라이선스 원문이 없습니다. 노드 3개와 프록시 관리 결과 2개를 포함하는 canonical SHA-256은 0a0b86eff71c4c24740a99ea0f334fca70e5c11e1a813c3a3bc646a825549794입니다.
  • 일반 ./backend/gradlew -p backend test --offline는 1,124개 중 104개 실패로 전체 통과하지 않았습니다. 여러 PostgreSQL 통합 테스트가 로컬 DB 연결 거부를 기록했고 현재 로컬 Docker 데몬도 실행되지 않습니다. 모든 실패가 같은 원인이라고 단정하지 않으며, 로컬 인프라 복구 후 별도 재실행이 필요합니다.

리뷰 시 확인할 한계

이번 PR은 장애 전환을 실행한 PR이 아닙니다. 서로 다른 DB backend로의 prepared statement 이동, OpenProxy 프로세스 장애, Patroni 리더 상실, 물리 standby별 분산과 Hikari/JPA 무중단성은 후속 시험입니다. 설치 TOML의 prepared cache 크기 1000과 SHOW CONFIG 풀 값 0의 우선순위도 공급사 확인이 필요합니다. 이전 캐시 카운터 파일은 이번 최종 JUnit 실행과 시점이 다르므로 수치를 합쳐 해석하지 않습니다.

@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: DocGrid/docgrid/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 3dd12fe3-bb62-4d83-ae07-973c6fad4eda


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Gimini-3
Gimini-3 merged commit c79b814 into develop Sep 27, 2026
1 check passed
@Gimini-3 Gimini-3 self-assigned this Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Test] OpenProxy 라우팅·세션 계약과 설치 설정 검증

1 participant