![[z/OS]](../images/ngzos.gif)
InFlight 작업 및 추정 중단 모드
분산 트랜잭션이 커미트를 시작하기 전에 장애가 발생하면 추정 중단 모드가 활성화됩니다.
여러 서버로 구성되는 분배 트랜잭션이 있는 경우, 해당 작업과
관련되는 자원 관리자가 트랜잭션 잠금을 유지합니다. 분배 트랜잭션이
커미트를 시작하기 전 장애가 발생하면 제품 및 자원 관리자가 추정
중단 모드에 진입합니다. 이 모드에서는 자원 관리자가 트랜잭션을
롤백합니다.
- 서버 장애 또는 통신 장애로 인한 영향은 장애 발생 시점에 작업을 실행 중인 서버에 따라 다릅니다.
- 분배 트랜잭션 트리의 종속 분기를 롤백하려면 OTS 제한시간이 필요합니다.
예제: 이러한 일반적인 사례는 동일한 서버에서 세션 Bean을 구동하는
서버 B 웹 클라이언트가 있는 경우입니다. 이 세션 Bean은
서버 C 및 서버 D의 엔티티 Bean에 대한 작업을 실행한 상태입니다. 모든
서버는 동일한 분배 글로벌 트랜잭션에 참여합니다. 세션 Bean 상태가
InFlight(아직 커미트를 시작하지 않음)일 때 갑자가 서버 B에 장애가 발생합니다. 서버
C 및 서버 D는 추가 작업 또는 2단계 커미트 프로토콜의 시작을
대기하지만 이 상태에서는 트랜잭션 잠금을 계속 자원 관리자가
유지합니다. 서버 역할은 다음과 같습니다.
- 서버 A: 서블릿/JavaServer Page 실행
- 서버 B: 세션 Bean 액세스
- 서버 C: 엔티티 Bean 액세스
- 서버 D: 엔티티 Bean 액세스
로컬 자원 관리자가 참여하면 추정 중단 처리를 수행하기 위해 호출되었는지 RRS가 확인합니다. 복구를 수행하는 경우, RRS가 자원 관리자와 함께 복구가 올바르게 수행되는지 확인합니다. 작업이 InFlight인 상태에서 장애가 발생하면 로컬 UR에 참여한 자원 관리자가 롤백하도록 RRS가 지시합니다.
제품은 항상 수행할 복구 작업이 있는 것으로 가정합니다. 서버가 가동될 때마다 실행 중인 해당 모드에 따라
다른 작업을 수행합니다.
- 서버가 다시 시작/복구 모드에서 실행 중인 경우 제품은 필요한 복구 작업이 있는지 여부를 확인합니다. 복구가 필요한 경우 제품은 복구를 수행하려고 시도하며 작업이 성공하거나 종료됩니다.
- 서버가 정상적으로 실행되는 경우, 서버가 새 작업을 시작하기 전까지는 다시 시작/복구 트랜잭션을 완료하지 않아도 됩니다. 서버가 다시 시작 작업을 판별하면 새 작업 항목을 시작합니다. 새 작업 항목 처리와 함께 트랜잭션 다시 시작/복구 처리가 계속됩니다.