2021년 10월 16일 토요일

SAP PO에서 JDBC Sender채널 실행 시 두개의 노드에서 중복실행이 되는 현상

현상

JDBC Sender채널 실행 시 두개의 서로 다른 노드에서 중복실행(약 0.03초 차이)되는 현상이 발생되며 메시지 아이디가 다른경우가 존재할수 있는것 같습니다.
Adapter Engine > Communication Channel Monitor에서의 다른 시간의 로그에서는 'Retry interval started' 이나 아래의 에러들이 확인되었던것 같습니다.
'already exist in duplicate check table: com.sap.sql.exception.OpenSQLIntegrityConstraintViolationException: [301]: unique constraint violated: Table[BC_MSG_DUP_CHECK]'
그외 어댑터 프레임워크 스케쥴러 상태 페이지(http://<host>:<port>/AdapterFramework/scheduler/scheduler.jsp에서도 특이사항이 없었던것 같습니다.

원인

Note 1355715 적용하고 scheduler.rolocMode의 값을 음의정수 값(예를 들어 -10)으로 설정 후 Sender JDBC채널 작업시 발생될수 있는 현상이라고 하는데 그외 비정상적으로 채널이 실행되는 경우가 있는것 같습니다.
AF스케쥴러가 시작시 직정된 노드에서 설정된 음의정수 값에 따라 실행이 되는데 작업중 노드간의 동기화가 안되어 다른노드에서 새롭게 디스패치되어 중복실행이 된것 같습니다.

해결

scheduler.rolocMode 값을 수정 후 노드중복실행되는 현상은 아직까지 확인이 안되었지만 그외 SP패치를 적용하는 방법도 있는것 같습니다.
rolocMode값이 -10으로 설정된경우 현재 노드에서 10회 실행된 후 다른 노드로 재배치될수 있다고 합니다.

위에 언급되었던 'BC_MSG_DUP_CHECK'은 동기(BE)와는 관련이 없는 테이블이라고 하며 중복된 메시지를 식별하는 용도인것 같으며
NWA > Configuration > Infrastructure > Java System Properties > Service 'XPI Service: Messaging System의 messaging.duplicateCheck.persistTime의 값에 따라 삭제주기를 수정할수 있는것 같습니다. 하지만 해당관련 에러는 왜 발생되었는지는 알수가 없었습니다.

참고:
1593415-AF Scheduler-fixes related to relocation mode
1560011-AF Scheduler: duplication of jobs in relocation mode
2778426-How to decrease the size of table BC_MSG_DUP_CHECK

댓글 없음:

댓글 쓰기