장애 정보
| 장애 번호 | 701336a |
| 현상 | 커넥션 풀에서 물리 커넥션을 재사용할 때, 이전 논리 세션에서 설정된 격리 수준 (ISOLATION LEVEL) 이 초기화되지 않고 다음 세션으로 전달된다. 이로 인해 클라이언트와 서버 간 격리 수준 인식이 불일치하여, SERIALIZABLE 격리 수준을 의도하지 않게 적용받은 트랜잭션에서 동시 갱신 오류 (ERROR_TX_CANT_SERIALIZE) 가 발생하거나, 오염된 세션으로 인해 다른 세션의 커밋을 보지 못한 채 오래된 데이터로 계산되는 결과 오류가 발생할 수 있다. |
| 원인 | DBC 클라이언트가 커넥션 풀의 물리 커넥션을 재사용하기 위해 세션 초기화 명령을 전송하면, 서버는 세션을 초기 상태로 복원하는 과정에서 트랜잭션 격리 수준 설정값만 초기화하지 않고 다른 설정은 정상적으로 초기화한다. |
| 해결 | JDBC 클라이언트가 커넥션 풀의 물리 커넥션을 재사용할 때, 서버가 세션을 초기 상태로 복원하는 과정에서 변경된 트랜잭션 격리 수준 설정도 함께 초기화되도록 수정한다. |
| 발생시점 | 26.08.31. |
| 패치필요버전 | 6FS07PS 7FS02PS |
패치 정보
| 패치명 | FS02PS_701336a |
| 메이저 버전 | 7 |
| 마이너 버전 | FS02PS |
| 버전 제목 | RESET_SESS 프로토콜이 세션 격리 수준을 초기화하지 않음 |
| 배포가능일 | 26.11.02. |
| 호환성 | • TAC 롤링 패치: 가능 • TSC 롤링 패치: 가능 • 백업 데이터 호환: 가능 • 프로토콜 호환: 가능 • 데이터 포맷 호환: 가능 |
| AP 영향도 | • 플랜 변경 여부: 아니오 • 결과 값 변경 여부: 예 • SQL 문법 변경 여부: 아니오 • 시스템 오브젝트 변경 여부: 아니오 • 기존 기능 변경 여부: 아니오 |
| 파라미터 | - |
| 우회방안 | - SERIALIZABLE 사용 자체를 제거 - SERIALIZABLE을 쓴 코드가 끝날 때 스스로 READ COMMITTED로 원복 - 물리 커넥션 재사용을 막기 |