2021년 2월 19일 금요일

What is 'Invalid adapter status' in Proxy acknowledgment

SAP PO의 동기 인터페이스를 줄이기 위한 방법 중 비동기로 소스시스템에 Acknowledgment를 전달해주는 방법이 있는데 가끔 PO에서 정상로그인 PROXY to JDBC 패턴의 인터페이스가 소스 SAP시스템의 SXI_MONITOR에서 ACK상태가 'Deferred acknowledgment handling, Invalid adapter status' 로 확인되는 경우가 있습니다. 아래와 같이 여러 상태를 확인해보면 문제는 없어보이는것 같은데 종종 발생되는 이 오류에 대한 궁금증이 생겨 좀더 알아보기로 했습니다.

정상 ack상태인경우 로그에서 'No error in acknowledgment' 로 보이며 에러인경우 'Still awaiting acknowledgment' 로 확인되는데 정상처처리가 안되고 무언가 대기중인 상태인것으로 확인이 됩니다.
하지만 더 자세하게 상태를 확인해봤을때는 정상,에러가 동일하게 Status가 'OK', AckStatus가 077로 확인되는데 이상태는 'message is delivered' 인것 같습니다.

Invalid adapter status 에 대해 구글에 검색해봤을때 위 현상에 대한 내용은 못찾았지만 노츠 중 1981174 - XI runtime: Deferred acknowledgment handling에서 비슷한 현상이 확인이 되며 이내용에서 제시한 해결책을 적용해보면 해결되지 않을까 생각이 듭니다.

원인&해결

노츠에서 나오는 내용을 보면 SAP시스템의 PROXY방식에 대한 언급은 없지만 이런 ACK의 케이스가 데이터베이스의 지연이라고 나와있는것 보니 ACK가 동작하는 방식에 대해서는 잘 모르겠지만 XML로그의 상태가 정상적이고 SXI_MONITOR의 보이는 로그리스트에 ACK상태가 'Still awaiting acknowledgment' 라면 PROXY에서 받는 ACK상태에서는 정상적으로 받았지만 DB에 상태 업데이트 하는 부분에서 무언가 지연이 생긴게 아닐까 생각을 하게됩니다.

아직 적용은 해보진 않았지만 이문제의 해결방법에 대해서는 ACK를 수신받는 SAP시스템의 Integration Server의 SXMB_ADM에 'ADAPTER_STATUS_INVALID_RETRY' 파라메터를 적용하는 방법이 있는데 이 파라메터의 기능은 Adapter Framework에서 수신받은 ACK상태를 설정한 횟수만큼 상태를 저장하기전에 ACK상태를 확인되는것 같은데 해당 매개변수의 값은 승인메시지가 오류로 저장되기전 승인(ACK)의 상태쿼리를 실행하는 횟수를 설정하는것 같습니다.

위 언급된 DB상태업데이트 지연이라는건.. HTTP 응답 메시지가 완료 되기 전에 승인 메시지가 수신되어 발생된 오류라고 하는데 SXI_MONITOR 티코드에서 응답과 ACK메시지에 대한 시간차를 확인해보면 명확한 원인을 찾을수 있지 않을까 생각됩니다.

RSXMB_RESTART_MESSAGES프로그램 있는데 SXI_MONITOR 모니터링의 에러메시지를 재처리하는 기능인것 같은데 큐관련 오류들도 처리할수 있을지는 모르겠습니다.

댓글 없음:

댓글 쓰기