Tmax 5 SP1 Fix#1
본 장에서는 Tmax 5 SP1 Fix#1에 추가된 기능에 대해 간략히 설명한다. 상세한 설명은 관련 안내서를 참고한다.
1. 추가 기능
1.1. TCP Gateway
-
TCPGW connect_check Callback 추가
Client의 연결 제어 콜백(allow_connection) 함수가 추가되었다. 해당 콜백을 사용하기 위해서 register.c에 함수 구현 필요하다.
allow_connection , _tcpgw_regfn(26, allow_connection);
함수를 등록하고 custom.c에 해당 콜백함수를 구현한다. 연결을 시도하는 remote를 허용/불허용 여부는 return value에 의해 결정한다. (양수 = 허용, 음수 = 불허용)
-
TCPGW remote 연결 재시도 횟수 및 timeout 시간 재조정 옵션 기능 추가
-
connect timeout 설정 기능 추가
[-X CONN_TIMEOUT=n]
-
reconnect 시도 회수 설정 기능 추가
[-X CONN_RETRY=n]
-
-
TCPGW dedicate 모드에서 연결 옵션 [-f] 추가
-
dedicate 모드에서 remoteCLI_A가 연결 중일 때, remoteCLI_B가 접속하게 되면 A, B 모두 연결이 끊어진다.
-
옵션(-f)를 사용하면 remoteCLI_A 연결만 끊어지고 remoteCLI_B 연결은 허용하는 기능 추가되었다.
-
1.2. SERVER
SysMaster에서 st -s-x 기능을 사용할 수 있도록 관련 기능이 추가되었다.
서버 라이브러리에서 제공되는 tmadmin() API에서도 유틸리티 tmadmin의 st -s -x 조회 기능이 추가되었다.
1.3. TDL
TDL tdlcall 가변인자형 API가 추가되었다.
TDL VERSION = 3에서 tdlcall 가변인자형 API인 tdlcallva, tdlcallva2 기능이 추가되었다.
-
tdlcallva
최신 버전의 동적 모듈 함수를 호출하는 함수로 함수명을 키로 사용하는 함수이다. 동적 모듈 함수의 프로토타입이 고정되지 않은 경우에 대해서 파라미터를 그대로 전달하여 함수를 호출한다.
#include <tdlcall.h> int tdlcallva(char *funcname, long urcode, int flags, int rettype, void *retval, int argc, …);
-
tdlcallva2
최신 버전의 동적 모듈 함수를 호출하는 함수로 라이브러리명과 함수명을 키로 사용하는 함수이다. 동적 모듈 함수의 프로토타입이 고정되지 않은 경우에 대해서 파라미터를 그대로 전달하여 함수를 호출한다.
#include <tdlcall.h> int tdlcallva2(char *libname, char *funcname, long urcode, int flags, int rettype, void *retval, int argc, …);
1.4. UTIL
-
tmadmin suspend 기능 개선
특정 서버를 suspend 하는 경우에, 해당 서버에서 서비스가 수행중이면 서비스가 종료될 때까지 suspend 요청은 대기하였으나 서비스가 실행 중이더라도 기다리지 않고 즉시 suspend를 적용시키고 return 되도록 기능이 추가되었다.
-
tmadmin spr에 대한 suspend, resume하는 경우 [-k], [-a] 옵션 추가
tmadmin spr에 대한 suspend, resume하는 경우 [-k], [-a] 옵션이 추가되었다.
-
사용법
sp -v svrname [-k n] [-a]
옵션 설명 [-k n]
suspend/resume 할 spr의 갯수
[-a]
즉시 실행
-
예제
서버의 MAX가 10일 때 다음 명령을 수행하면 spri가 큰 프로세스부터 5개가 suspend 됩니다. 만약 서비스가 running 중인 상태라면 서비스가 종료될 때까지 기다리게 되며, 기다리지 않고 실행하려면 [-a] 옵션을 함께 사용해야 한다.
sp -v svr -k 5
-
-
mksvr 디폴트 CFLAG 제거 옵션 기능 추가
mksvr 옵션 [-u]를 사용하는 경우 기본 옵션이 적용되지 않고 사용자가 재정의한 옵션 적용 가능하도록 기능이 추가되었다.
2. 버그패치
2.1. Engine
-
Custom Gateway IRT 오동작 오류
Custom Gateway IRT 오동작하는 오류가 수정되었다.
-
svr type Custom Gateway일 경우 IRT를 수행하지 못하는 오류
-
COUSIN svc에 대해서 tpacall TPBLOCK|TPNOREPLY 으로 요청시 응답을 받지 못하는 오류
-
COUSIN 설정이 없는 노드에서 COUSIN svc 호출시 IRT를 하지 못하는 오류
-
관련 이슈 : IMS 40853
-
-
DYN 서버에서 호출하는 경우 응답을 못받는 오류
-
DYN으로 설정한 서버들에서 다른 DYN 서버로 tpcall, tpacll, tpsuspend, tpresume, tpforward, 대화형 통신을 하는 경우 응답을 받지 못한 오류가 수정되었다.
-
관련 이슈 : IMS 54342
-
-
DYN 서버 설정하는 경우 일반 서버 부트 실패 오류
-
DYN 서버 설정 이후에 일반 서버 설정이 있을 경우 tmboot 시 일반 서버 부트가 실패하는 현상이 수정되었다.
-
-
노드 backup 설정하는 경우 backup 비정상 동작 오류
-
SP 5.0에서 SERVERGROUP 절에 AUTOBACKUP 옵션이 추가되면서 파생된 버그로 svg의 backup 설정할 때 정상적으로 backup 을 기동하지 못하는 오류가 수정되었다.
-
-
CLH 메모리 누수 현상
-
TCP G/W, Tmax Domain (Non-TX) G/W를 cousin으로 설정하는 환경에서 채널에 종료된 상태에서 재접속하여 가용한 상태가 될 경우 CLH에 메모리 누수가 발생하는 현상이 수정되었다.
-
관련 이슈 : IMS 57415
-
-
Event CLH에서 Client 연결 종료하는 경우 자원 정리가 정상적으로 되지 않는 오류
-
4Node 환경에서 racd를 통하지 않고 각 노드별로 콘솔에서 동시에 tmboot -n 'hostname’로 기동시킬 때 CLH 기동된 이후 다른 서버들이 기동하지 못하는 현상이 수정되었다.
-
-
MAXQCOUNT 설정이된 서버에 suspend 후 서버로 요청을 하면 MAXQCOUNT 설정 내용에 대한 오류
-
특정 서버를 suspend한 후 서비스 요청을 계속 할 경우 MAXQCOUNT 설정이 있음에도 불구하고 계속해서 queue에 쌓이는 현상이 수정되었다.
-
-
mksvr 빌드된 노드 네트워크 연결 종료 후 재연결할 때 tmm 비정상 종료 오류 수정
-
Cousin group의 서버가 mksvr로 빌드된 경우 노드 네트워크 연결 종료 후 재연결할 때 tmm 비정상 종료되는 오류가 수정되었다.
-
-
spri가 MAXSPR에 가까운 서버에서 다른 서비스를 요청하면 tpforward, tpreturn 시 응답받지 못하는 오류
-
Domain Gateway에서 다른 도메인의 요청을 받아서 자신의 노드로 서비스를 요청하면 응답받지 못하는 현상이 수정되었다.
-
관련 이슈 : IMS 62036
-
-
부하 상황에서 UCS 서버가 비정상 종료될 때 CLH도 함께 비정상 종료하는 오류
-
CLH로 서비스 요청이 들어와 UCS타입의 서버 프로세스로 메시지를 전달하는 과정에서 해당 프로세스가 비정상 종료하거나 서버와 CLH 사이의 소켓 연결에 문제가 생길 경우 CLH가 재귀호출되면서 stack overflow가 발생하여 비정상 종료하는 현상이 수정되었다.
-
관련 이슈 : IMS 62143
-
2.2. SERVER
-
구버전 AUTOTRAN 호환 패치
-
구버전 AUTOTRAN 호환 패치
구버전의 AUTOTRAN=Y 와 현재 버전의 AUTOTRAN=Y가 기능이 서로 다르다. 따라서, 5.0에서 구버전의 AUTOTRAN=Y를 지원하기 위해서 AUTOTRAN=B를 제공한다. AUTOTRAN=B일 경우 구버전의 Y와 동일하게 동작하도록 수정되었다.
-
관련 이슈 : IMS 60833
-
-
tpsvrdone API 비정상 동작 오류
-
서버 종료 함수(tpsvrdone) 안에서 다른 서버의 서비스를 호출할 경우에 tpsvrdone이 실행되는 서버의 서비스가 호출될 경우 tpsvrdone 안에서 호출한 서비스의 응답이 unknown message type 에러가 발생하는 문제가 수정되었다.
-
관련 이슈 : IMS 61897
-
-
TPNOREPLY flag 설정 후 tpreturn()시 에러 발생 오류
-
TPNOREPLY flag를 설정하고 tpacall()로 서비스를 호출하면, 서비스에서 필드버퍼를 tpreturn()하게 될 때 약간의 서비스 수행시간이 있을 경우 TPEITYPE 에러가 발생하는 현상이 수정되었다.
-
관련 이슈 : IMS 56121
-
-
XAOPTION="DYNAMIC" 설정된 서버그룹에서 tpreturn() 호출하는 경우 tx_connection_reset 수행 현상
-
SP1 5.0 부터 환경설정 SERVERGROUP 절에 XAOPTION="DYNAMIC" 설정 시 tpreturn() 또는 tpforward() 수행될 때 RM 재연결하도록 되어 있으나 아래 로그가 slog에 재연결할 때마다 기록되고 있으나 tpreturn()시 트랜잭션 진행 중이면 xa_end()를 호출하고 나서 항상 RM 재연결하는 데, xa_end()가 실패할 경우에만 RM 재연결하도록 수정되었다.
"SVR0211 General Infomation : tx_connection_reset start" "SVR0211 General Infomation : tx_connection_reset success"
-
2.3. TDL
-
tdlclose() 함수에 TDLCLOSE_HARD flags 오동작 오류
tdlclose() 함수에서 flags로 TDLCLOSE_HARD를 설정한 경우 tdlcall2()로 동적 로드되었던 모듈을 해제(dlclose)하게 되는데, 이때 로컬캐쉬에 사용되는 인덱스가 초기화되지 않아서 다음에 모듈을 호출하면 정상적으로 처리되지 않는 오류 수정되었다.
-
TDL LANG=COBOL 환경에서 tdlupdate 사용하는 경우 모듈 최신로 업데이트되지 않는 오류
tdlupdate를 사용해서 모듈을 업데이트하면 현재 운영 중인 모듈의 확장자를 이전 seqno로 변경하고, 최신 반영되는 새로운 모듈의 확장자를 so로 복사해야 한다. 그러나 이러한 동작이 되지 않고 현재 운영중인 모듈은 그대로 so 확장자를 가지고, 새로 업데이트되는 모듈의 확장자는 최신 seqno로 적용되는 현상이 발생하였다. 따라서 tdlupdate를 반영하고 나서 tdlcall을 하더라도 예전에 반영되었던 모듈로 동작하도록 수정되었다.
2.4. UTIL
-
tmadmin suspend 비정상 동작 오류
tmadmin suspend 비정상 동작하는 오류가 수정되었다.
-
tmadmin에서 running 중인 서비스(서버)를 suspend해서 block 상태에 있는 도중에 서버가 SVCTIMEOUT이 발생해서 비정상 종료하는 경우에 tmadmin에서 hang이 발생하는 문제
-
tmadmin에서 suspend를 하는 도중에 다른 tmadmin이 접속했다 종료하는 경우에 suspend를 수행하던 tmadmin에서 hang이 발생하는 문제
-
tmadmin에서 suspend를 했는 데 장시간 block이 되어서 ctrl + c로 종료후 해당 서버를 resume하고 다시 suspend를 호출할 때 hang이 발생하는 문제
-
관련 이슈 : IMS 56416
-
-
minclh > 1 이상인 환경에서 tmadmin st -v 조회할 때 NRDY 상태가 랜덤하게 표시되는 현상
CLH가 2개 이상 기동하는 환경에서 tmadmin으로 stat 정보를 조회하면 Tmax 5 SP1부터는 CLH index 0번부터 정렬되어 표시되도록 변경되었다. 그런데 st -v 옵션으로 서버 상태정보 조회하는 경우 RDY 상태가 분명함에도 불구하고 조회할 때 랜덤하게 NRDY 상태로 표시되는 현상이 발생하여 해당 현상이 수정되었다.
-
서버 상태 비정상 조회
-
STD_DYN, UCS_DYN 서버들의 st -v로 조회할 때 잘못된 결과를 가져오는 오류가 수정되었다.
-
관련 이슈 : IMS 54177
-
2.5. TCP Gateway
-
tcpgw에서 -E 옵션 적용시 tpacall(TPNOREPLY)로 요청하면 일부 메시지가 유실되는 현상
-
tcpgw에서 -E 옵션을 사용해서 매 요청할 때 마다 remote로 연결하고 응답을 받으면 채널을 종료시키는 기능을 사용하는 환경에서, 해당 서버의 CPC 설정이 1 이상인 경우에 tcpgw로 tpacall(TPNOREPLY) 요청을 하는 경우 remote의 일부 데이터가 유실되는 현상이 수정되었다.
-
관련 이슈 : IMS 59295
-
-
tcpgw로 TPNOTRAN으로 요청하는 경우 다른 서비스로 relay할 때 메시지가 유실되는 현상
-
트랜잭션이 진행 중인 서비스에서 tcpgw로 tpacall(TPNOTRAN)로 요청 후 트랜잭션이 종료된 이후에 tcpgw의 remote로부터 응답이 들어와서 다른 서비스로 relay하는 경우에 메시지가 유실되는 현상이 수정되었다.
-