Tmax 5 SP2 Fix#3
본 장에서는 Tmax 5 SP2 Fix#3에 추가 기능과 변경 기능 그리고 버그 패치에 대해 간략히 설명한다. 상세한 설명은 관련 안내서를 참고한다.
1. 추가 기능
본 절에서는 추가된 주요 기능에 대해 설명한다.
1.1. ENGINE
-
서버별 SVRQTIMEOUT 기능 추가
-
서버마다 개별적으로 QTIMEOUT이 적용되도록 하는 기능을 추가하였다.
-
SVRQTIMEOUT 설정값에 따른 동작은 아래와 같다.
설정값 설명 -1
NODE 절의 CLHQTIMEOUT 설정값과 동일하게 설정된다.
0
해당 서버의 요청건들은 큐퍼지(QPURGE)되지 않는다.
양수
해당 서버만 설정값으로 동작한다.
-
큐퍼지되면 slog에 다음과 같은 로그가 기록된다.
(E) CLH2093 server queue is purged due to CLH or SVR QTIMEOUT(seconds): SVRNAME[svrname] CLID[client ID] REQTIME[HHMMSS.MIL] [CLH0051]
-
IGNORE_CLHQTIMEOUT=Y로 설정하면 SVRQTIMEOUT=0과 동일한 의미로 동작한다.
uncfl을 실행할 때 SVRQTIMEOUT=0이면 IGNORE_CLHQTIMEOUT=Y 항목과 SVRQTIMEOUT 항목을 표시해 주고, SVRQTIMEOUT이 0이 아니면 IGNORE_CLHQTIMEOUT 설정은 표시되지 않고 SVRQTIMEOUT 항목만 표시된다. SVRQTIMEOUT이 -1이면 표시되지 않는다.
-
이 설정은 tmadmin에서 set 명령으로 동적변경이 가능하다. 필드명은 sqt 또는 svrqtimeout이다.
-
서버 라이브러리의 tmadmin() API를 통해서 조회가 가능하며, TMADM_SET 명령을 통해 동적 변경이 가능하다.
-
관련 이슈 : IMS 111648
-
-
TMMOPT 절에 -R count, -D 옵션 동적 설정 기능 추가
-
TMMOPT 절에 -R count, -D 옵션을 tmadmin -m setopt로 동적 설정이 가능하도록 기능을 추가하였다.
$$1 tmaxi4 (tmadm): setopt -tmm -R 5 new value (5) is set for section = -tmm, name = N/A, fld = -R (I) TMM3039 TMM option [-R] set to 5 [TMM0295] $$1 tmaxi4 (tmadm): setopt -tmm -D 0 new value (0) is set for section = -tmm, name = N/A, fld = -D (I) TMM3039 TMM option [-D] set to 0 [TMM0295]
-
관련 이슈 : IMS 112688
-
-
tmdown을 실행할 때 처리 중인 거래를 보장하는 기능 추가
-
GATEWAY(TMAX, TMAXNONTX) 절 RDOWN=Y 설정
-
도메인 게이트웨이로 인/아웃바운드를 요청 이후에 tmdown을 수행할 때 수행 중인 거래가 종료된 후 down을 수행한다.
-
tmdown 중 게이트웨이로 들어온 요청에 대해서 바로 에러 리턴(TPENOREADY)을 수행한다.
-
tmdown 중 타임아웃이 발생하면 에러 리턴(TPETIME) 후 down을 수행한다.
-
-
NODE 절 CLIREQBLOCK=Y 설정
-
클라이언트 요청 이후에 tmdown을 수행할 때 수행 중인 거래가 종료된 후 down을 수행한다.
-
tmdown 중 클라이언트 호출에 대해서 바로 에러 리턴(TPENOREADY)을 수행한다.
-
tmadmin -m 명령어를 실행한 뒤 set -n nodename crb Y/N으로 동적 변경 가능하다.
-
-
관련 이슈 : IMS 108322
-
-
TMM 비정상 종료될 때 모든 프로세스가 종료하는 기능 추가
-
DOMAIN 절 및 NODE 절에 MAC=Y/(N)를 추가한다.
MAC 옵션을 Y로 설정하면 TMM이 비정상 종료되거나 TMM과의 domain-socket 채널이 끊겼을 때 모든 프로세스들이 TMM의 연결 끊김을 감지한 이후에 강제 종료한다.
-
관련 이슈 : IMS 115397
-
-
Tmax Failover Retry 기능 추가
-
TMMOPT 절에 -R count로 retry할 횟수를 지정한다. 이 횟수 * nliveinq 시간이 경과한 후에 failover를 수행한다.
-
TMMOPT 절에 -D로 지정할 경우 failback될 때 자동으로 기동된 backup svr을 종료한다.
-
관련 이슈 : IMS 105883
-
-
NODE 절에 SLOG_RNAME 기능 추가
-
NODE 절에 SLOG_RNAME=Y/(N)를 설정할 때 서버 타입이 아니라 서버 이름으로 slog에 출력한다.
-
GATEWAY, HMS, RQS, TMS 타입의 서버는 위 설정을 하지 않으면 실제 서버 이름이 아닌 서버 타입을 slog에 출력된다.
-
-
TMMOPT -e/-o $(CDATE) 등 매크로 기능 추가
-
TMMOPT 항목의 -e / -o 옵션에 다음의 매크로를 사용할 수 있다.
-
$(CDATE)
-
$(CTIME)
-
$(CYEAR)
-
$(CMONTH)
-
$(CMONTHS)
-
$(CDAY)
-
$(CWDAY)
-
$(CWDAYS)
-
$(CYDAY)
-
$(CHOUR)
-
$(CMINUTE)
-
$(CSECOND)
-
$(PID)
-
-
CLHOPT 항목의 -e / -o 옵션도 위와 동일하게 사용 가능하다.
-
-
broadcast 에 대한 타임아웃 기능 추가
-
CLHOPT 절에 [-B] 옵션 추가
항목 설명 [ -B sec ]
메시지 삭제 시점을 설정한다. BROADCASTTIMEOUT 지난 메시지가 있을 때 새로운 broadcat enq 요청이 들어 오면 이때 큐를 체크하여 삭제한다.
-
패치 모듈 : CLH
-
관련 이슈 : IMS 102184
-
-
TSM 엔진 추가
-
기존에 tmapm 프로그램을 별도로 제공하고 있으나, 이를 사용하기 위해서는 사용자가 환경설정파일에 UCS 서버로 직접 등록해야 하고, 이 프로그램에서 타임아웃을 감지할 때에 사용자가 정의한 스크립트를 호출하고 끝나기 때문에 사용하기 번거로운 부분이 존재한다. 따라서 tmapm 프로그램을 기존에 비해 설정하기 편한 엔진 프로세스(TSM)로 관리할 수 있도록 하였다.
-
환경설정
-
SERVER 절 TMAPM=n (기본값 -1, 설정 범위: 1~32767)
TSM 엔진 프로세스가 해당 서버에서 수행되는 서비스에 대한 타임아웃을 체크하도록 설정한다. -1을 설정하면 해당 서버는 TSM의 체크 대상에서 제외된다. 설정값은 타임아웃 발생 이후 체류 가능한 시간을 의미한다. 만약 1을 설정하면 타임아웃이 발생한 이후에 1초동안 프로그램이 수행될 시간을 제공한 뒤에 해당 프로세스를 강제종료(SIGKILL) 시킨다. 최대 32767초까지 설정할 수 있다.
만약 모든 SERVER가 TMAPM을 설정하지 않을 경우에는 TSM 엔진 프로세스는 tmboot 시점에 기동하지 않는다. 그러나 동적 설정 변경으로 SERVER에 대한 TMAPM을 설정하면 tsm 엔진 프로세스가 즉시 기동하게 된다. tmboot -e tsm 명령어로 기동할 수 있다.
-
SERVICE 절 TMAPM=[Y|n] (기본값 Y)
TSM 엔진 프로세스가 해당 서비스에 대해서 타임아웃을 체크할 것인지 여부를 설정한다. 만약 특정 서비스를 N으로 설정하면, 해당 서비스에서 타임아웃이 발생하더라도 TSM에서 체크하지 않는다. 이 옵션은 tmapm 프로그램에서도 동일하게 적용된다. (기존부터 제공되던 옵션임)
-
-
동적 설정 방법
-
set -v svr_name tmapm n 명령을 통해 동적으로 변경이 가능하다.
$$1 tmax (tmadm): echo set -v alarm0 ta 5 new value (5) is set for section = SERVER, name = alarm0, fld = ta $$2 tmax (tmadm): ADM quit for node (tmax)
-
-
발생 로그
-
(E) BOOT3025 tsm is already running [BOOT0040]
tmboot -e tsm 명령을 수행할 때 이미 기동 중인 경우 발생하는 에러이다.
-
(E) CFL3198 line n : invalid parameter value : TMAPM. Valid range = (MIN : -1, MAX : 32767) except (0) [CFL5542]
SERVER 절 TMAPM 옵션을 설정할 때 잘못 설정한 경우 발생하는 에러이다.
-
(W) TSM7203 svc(service_name) of svr(svr_name:spri:pid) clh(n) svctime(n) elapsed n seconds [TSM0304]
TSM에서 체크한 서버 프로세스의 서비스 타임아웃 정보를 출력한다.
-
(I) TSM7204 SVR (svr_name) spri(n) is down due to TMAPM=n [TSM0306]
TSM에서 해당 서버 프로세스를 SIGKILL 시그널로 강제종료했음을 알리는 로그이다.
-
(I) TMM3068 TSM (tsm) is started, pid = n[TMM5205]
동적 설정 변경으로 인해 TSM 프로세스가 새롭게 기동하였음을 알리는 로그이다.
-
-
유의사항
-
tpsvctimeout()에서 tpreturn(TPEXIT)에 의한 서버 재기동은 서버 프로세스 자신이 직접 재시동을 수행한다. 반면에 TSM에 의한 타임아웃은 SIGKILL 시그널에 의해 서버 프로세스가 강제 종료되는 것이다. 따라서 client가 리턴받는 에러 코드가 TPESVCERR가 아닌 TPESVRDOWN이 된다.
-
multi-clh 환경에서 해당 서버에 동시에 스케줄링되는 상황에서 먼저 수행되는 서비스가 타임아웃 발생하는 경우, 서버 자신이 직접 재기동하는 경우에는 아직 대기 중인 다른 CLH의 요청이 다른 프로세스에서 정상적으로 처리되는 반면에, TSM에 의해서 강제 종료되는 경우 대기 중이던 다른 CLH의 요청들도 TPESVRDOWN 에러를 받게 된다.
-
-
관련 이슈 : IMS 110953, 110305
-
1.2. 클라이언트/서버
-
MQ xa_stub 라이브러리 추가
-
libmqs.so 라이브러리를 추가하였다.
-
MultipleRM에서 SVRGROUP 절 DBNAME=MQ로 설정하면 해당 stub 라이브러리를 사용할 수 있다.
-
관련 이슈 : IMS 107602
-
-
MultipleRM stub 라이브러리를 지정할 수 있는 기능 추가
-
$TMAXDIR/config/RM 파일에 Tmax 환경설정의 DBNAME과 일치하는 항목이 있으면 해당 라이브러리를 사용할 수 있도록 기능을 추가하였다.
*SVRGROUP svg1 NODENAME = "@HOSTNAME@", OPENINFO = "QMNAME=MQTEST", TMSNAME = tms_mq, DBNAME = MQ_RENAME [RM file] # Sample for RM Definition # Oracle Oracle_XA:oras:-L${ORACLE_HOME}/lib -lclntsh `cat ${ORACLE_HOME}/lib/ldflags` `cat ${ORACLE_HOME}/lib/sysliblist` # Informix Informix_XA:infs:-L${INFORMIXDIR}/lib -L${INFORMIXDIR}/lib/esql -lifxa `esql -libs` # Sybase Sybase_XA:sybs:-L${SYBASE}/${SYBASE_OCS}/lib -lxadtm `sybopts.sh ct cs comlibs` `sybopts.sh syslibs` # DB2 DB2_XA:db2s:-L${DB2DIR}/lib -ldb2 MQ_RENAME:mqs
-
관련 이슈 : IMS 107602
-
-
tmax_my_rminfo() API 추가
-
MultipleRM 서버에서 자신이 속한 서버 그룹의 DB 정보를 가져오는 API를 추가하였다.
-
프로토타입
int tmax_my_rminfo(RM_INFO_T *rminfo, int max_elem);
-
파라미터
파라미터 설명 rminfo
M 정보를 저장할 구조체 배열 버퍼의 포인터이다.
max_elem
구조체 배열의 요소 개수이다(MRM은 서버 그룹을 최대 16개까지 지정 가능함).
다음은 RM_INFO_T 구조체 정보이다.
#include <usrinc/tmaxapi.h> typedef struct RM_INFO_S { int rmid; int flags; char dbname[DBNAME_SIZE + 1]; char openinfo[RM_STRING_SIZE + 1]; char closeinfo[RM_STRING_SIZE + 1]; } RM_INFO_T;
-
반환값
반환값 설명 RM 개수
자기 자신이 속한 서버그룹이 가지는 RM의 개수
-
-
관련 이슈 : IMS 113300
-
-
구 버전 클라이언트 에러 코드 지원 옵션 추가
-
환경설정 파일(tmax.env)에 TMAX_PRB_1000=Y를 지정하는 경우 Tmax 5 SP2 Fix#2 이전의 동작 방식으로 강제 롤백한다.
-
채널 끊긴 후에 호출하는 경우 TPEOS가 리턴하는 문제를 TPECLOSE가 리턴하도록 수정한 부분을 기존대로 TPEOS가 발생하도록 동작한다.
-
CLH와 클라이언트의 채널 연결 상태에 문제가 있어서 에러가 발생한 경우(예를 들어 tpcall(), tmax_chk_conn() 등의 API에서 TPECLOSE, TPESYSTEM 에러가 발생한 경우), tpend() 호출하지 않고 클라이언트 API를 호출하는 경우 TPECLOSE 에러가 발생하도록 수정한 부분을 기존대로 TPEOS가 발생하도록 동작한다.
-
관련 이슈 : IMS 111005
-
1.3. 도메인 게이트웨이
-
접속 시도 로그를 slog에 남지 않게 하는 CLOPT -x 옵션 추가
-
환경 구성상 원격 연결이 끊어져 있는 도메인 게이트웨이에 주기적으로 접속 시도를 할 경우 slog에 대량의 로그가 남을 수 밖에 없게 된다.
CLOPT 항목에 -x 옵션을 주었을 경우 해당 로그들을 ulog에만 남기고 slog에는 남기지 않도록 한다.
-
관련 이슈 : IMS 117571
-
1.4. JAVA 게이트웨이
-
접속 시도 로그를 slog에 남지 않게 하는 CLOPT -x 옵션 추가
-
환경 구성상 원격 연결이 끊어져 있는 JAVA 게이트웨이에 주기적으로 접속 시도를 할 경우 slog에 대량의 로그가 남을 수 밖에 없게 된다.
CLOPT 항목에 -x 옵션을 주었을 경우 해당 로그들을 ulog에만 남기고 slog에는 남기지 않도록 한다.
-
관련 이슈 : IMS 117571
-
1.5. TCP 게이트웨이
-
TCPGW 큐잉 기능 추가
-
CLOPT 항목에 [-XFWDQ] 옵션을 주었을 경우 TCPGW로 tpforward될 때 TCPGW의 모든 CPC가 사용 중일 때 서비스가 큐잉되도록 기능이 개선되었다.
-
관련 이슈 : IMS 101309
-
-
svclog 기능 추가
-
CLOPT -l 옵션(-- 이전)을 주었을 경우 Tmax에서 리모트로 요청하고 리모트로부터 응답을 받는 요청에 대해서 서비스 로그를 기록하도록 기능 추가하였다.
TCS, UCS와 마찬가지로 5분 단위로 내용을 flush하며, TCPGW가 정상 종료될 때에도 미기록된 내용들을 flush시킨다.
TCPGW의 요청이 타임아웃 발생하는 경우에도 요청할 때부터 해당 발생시점까지 경과시간을 svclog에 기록한다. 이때 타임아웃 시간이 만약 10초로 지정되어 있었다면 TCS처럼 정확하게 시간을 체크하지 못하기 때문에 약간의 타임아웃 발생까지 오차가 있을 수 있음을 유의한다. 이 기능은 Tmax 5 SP2 Fix3 이상 버전에서만 제공한다.
-
관련 이슈 : IMS 101309
-
1.6. 유틸리티
-
cfl 공유 메모리 크기 출력 -P 옵션 추가
-
cfl을 실행할 때 Tmax에서 사용하는 전체 공유 메모리의 크기를 보여주는 -P 옵션을 추가한다.
$ cfl -i m.m -P shmsize info: shmkey = 0x11936(71990), shmsize = 552652 shmkey = 0x11937(71991), shmsize = 290192 shmkey = 0x11938(71992), shmsize = 230816 shmkey = 0x11939(71993), shmsize = 49152 shmkey = 0x1193a(71994), shmsize = 0 CFL is done successfully for node
-
관련 이슈 : IMS 108588
-
-
svcrpt -A 옵션 추가
-
svcrpt에서 서비스 로그를 정렬할 때 평균 처리시간으로 정렬하는 -A 옵션을 추가한다.
$ svcrpt -i /home/tmaxha/tmax/log/ulog/svclog* -A Services issued between Thu May 26 18:34:31 2016 and Thu May 26 18:35:04 2016 18 - 19 total svc_name num/avg num/avg ------------ ------------ ------------ SVC10 1000/1.000 1000/1.000 SVC9 1000/0.900 1000/0.900 SVC8 1000/0.800 1000/0.800 SVC7 1000/0.700 1000/0.700 SVC6 1000/0.600 1000/0.600 SVC5 1000/0.500 1000/0.500 SVC4 2000/0.400 2000/0.400 SVC3 1000/0.300 1000/0.300 SVC2 2000/0.200 2000/0.200 SVC1 4000/0.100 4000/0.100 ------------ ------------ ------------ total 15000/0.427 15000/0.427
-
관련 이슈 : IMS 111395
-
-
Tmax 버전 정보 patch/release 여부 정보 기능 추가
-
Tmax 버전 정보를 출력할 때 릴리즈 버전인 경우(final_release), 패치 버전인 경우(patch)로 표시한다.
$ tmaxlibver -l libsvr.so -d -6 libsvr.so for TMAX Version 5.0 SP #2 Fix #3 r10353 fd(16384) 64bit binary for Solaris 11 (patch) $ tmadmin -V Admin for TMAX Version 5.0 SP #2 Fix #3 r10353 fd(16384) 64bit binary for Solaris 11 (patch) $ svr2 -V SVR for TMAX Version 5.0 SP #2 Fix #3 r10353 fd(16384) 64bit binary for Solaris 11 (patch)
-
관련 이슈 : IMS 107212
-
-
cfl -g 옵션 추가
-
게이트웨이에서 REMOTE IP/PORT에 대해 중복 설정이 가능하도록 옵션이 추가되었다.
-
예제
cfl -g -i gw.m CFL is done successfully for node(tmaxi4)
-
관련 이슈 : IMS 117102
-
1.7. 관리도구
-
clientinfo -c, -P, -p 옵션 추가
-
clientinfo를 수행할 때 CRYPTPORT, 특정 포트로 접속한 클라이언트만 조회할 수 있는 기능을 추가하였다.
-
사용 방법
$$1 tmax1 (tmadm): ci [-c] [-P] [-p [portno, ...]]
옵션 설명 [-c]
암호화 모드로 접속한 클라이언트만 조회할 수 있다.
[-P]
포트 번호 정보를 추가로 출력한다.
[-p [portno, …]]
열거한 Tmax 접속 포트 번호에 대해서만 출력한다.
-
예제
다음은 명령어 사용 예제이다.
$$1 tmaxi9 (tmadm): ci -c CLH 0: -------------------------------------------------------------------------------------------------------- cli_id clid status count lastin_time ipaddr usrname tmax_port -------------------------------------------------------------------------------------------------------- 0 0x00000000 RUN 0 1 127.0.0.1:58235 7189 1 0x00000001 RUN 0 1 127.0.0.1:58236 7389 4 0x00000004 RUN 0 1 127.0.0.1:58239 7289 -------------------------------------------------------------------------------------------------------- Total Connected Clients(CRYPTED) = 3 -------------------------------------------------------------------------------------------------------- $$1 tmaxi9 (tmadm): ci -p 7189,7289,7389,7489,7589 CLH 0: -------------------------------------------------------------------------------------------------------- cli_id clid status count lastin_time ipaddr usrname tmax_port -------------------------------------------------------------------------------------------------------- 0 0x00000000 RUN 0 1 127.0.0.1:58235 7189 1 0x00000001 RUN 0 1 127.0.0.1:58236 7389 2 0x00000002 RUN 0 1 127.0.0.1:58238 7489 3 0x00000003 RUN 0 1 127.0.0.1:58237 7589 4 0x00000004 RUN 0 1 127.0.0.1:58239 7289 -------------------------------------------------------------------------------------------------------- Total(7189,7289,7389,7489,7589) Connected Clients = 5 -------------------------------------------------------------------------------------------------------- $$8 tmaxh9 (tmadm): ci -P CLH 0: -------------------------------------------------------------------------------------------------------- cli_id clid status count lastin_time ipaddr usrname tmax_port -------------------------------------------------------------------------------------------------------- 7 0x00000007 QED 0 27 192.168.1.34:63307 12399 8 0x00000008 QED 0 27 192.168.1.34:63308 12399 9 0x00000009 QED 0 27 192.168.1.34:63309 12399 10 0x0000000a QED 0 27 192.168.1.34:63310 12399 11 0x0000000b QED 0 27 192.168.1.34:63311 12399 -------------------------------------------------------------------------------------------------------- Total Connected Clients = 5 --------------------------------------------------------------------------------------------------------
-
관련 이슈 : IMS 108817
-
-
maxrstart reset 기능 추가
-
tmadmin에서 maxrstart 값을 reset이 가능하도록 tmadmin의 restat -r 옵션을 추가하였다.
-
예제
$ qpsx2@tmax1:/home/tmax1/tmax/sample/server>tmadmin -m --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 qpsx2 (tmadm): restat -v svr2 -r Restarted count for SVR(svr2:4) cleared: 1 $$2 qpsx2 (tmadm):
-
관련 이슈 : IMS 114095
-
-
cfgopt tmm에 -R, -D 추가 및 -gw 기능추가
-
cfgopt -tmm을 조회할 때 -R, -D 옵션 항목을 추가하였다.
-
cfgopt -gw gwname 명령어를 추가하였다.
-
예제
$ tmadmin $$1 node1 (tmadm): setopt Usage: setopt -tmm -option value -gw gwname -option value $$2 node1 (tmadm): cfgopt Usage: configopt -tmm -gw gwname $$3 node1 (tmadm): setopt -tmm -D 1 new value (1) is set for section = -tmm, name = N/A, fld = -D $$4 node1 (tmadm): cfgopt -tmm ------------------------------------------------------------------------ -tmm configurable value ------------------------------------------------------------------------ accept retry count (-A) = 100 max forked threshold (-F) = 95 booting timeout (-t) = 10 auto failback (-D) = 1 node check try count (-R) = 0 ------------------------------------------------------------------------ $$5 node1 (tmadm): setopt -gw gw_name -D 2 new value (2) is set for section = -gw, name = gw_name, fld = -D $$6 node1 (tmadm): cfgopt -gw gw_name ------------------------------------------------------------------------ -gw configurable value ------------------------------------------------------------------------ debug log level (-D) = 2 ------------------------------------------------------------------------
-
관련 이슈 : IMS 118505
-
2. 변경 기능
본 절에서는 변경된 주요 기능에 대해 설명한다.
2.1. ENGINE
-
tmboot를 수행할 때 TIM, TMS의 복구 시간이 오래 걸리는 현상 개선
-
TLM에서 TXLOG, GWTXLOG 파일을 복구하는데 많은 시간이 걸리는 부분을 개선하였다.
-
TMS에서 RM에게 xa_recover()를 호출할 때 한 번에 10개씩 요청하는 부분을 기본 256개씩 요청하도록 변경하였다. 이 값은 CLLOPT 항목에서 -c <count> 옵션으로 변경 가능하다. 기본값은 256이며, 최소 10, 최대 8192까지 설정 가능하다.
-
관련 이슈 : IMS 105295
-
-
CLH2053, CLH2052 에러 메시지 개선
-
CLH에서 연결이 끊긴 서버에서 들어온 메시지를 버릴 때 나타나는 로그 CLH2053에 msgtype과 spri를 같이 출력하도록 변경하였다.
-
이전
2053 msg discarded due to closed server connection : svc = %s
-
이후
2053 msg discarded due to closed server connection : svc = %s, msgtype = %d, spri = %d
-
-
CLH2052도 msgtype을 출력하도록 변경하였다.
-
이전
2052 msg discarded due to closed client(%#x) connection : svc = %s
-
이후
2052 msg discarded due to closed client(%#x) connection : svc = %s, msgtype = %d
-
-
관련 이슈 : IMS 116465
-
-
CLH가 TMM과 연결이 끊겼을 때 동작방식 변경
-
NODE 절에 MAC=N(기본값) 일 경우
만약 TMM과의 연결만 끊기고 TMM 프로세스 자체는 계속 살아있는 상황이었다면 CLH는 계속 구동하면 안된다. 왜냐하면 TMM이 CLH와의 연결이 끊기는 순간 해당 CLH는 종료된 것으로 가정하고 다른 CLH를 기동할 것이기 때문이다. 그래서 CLH가 TMM과 연결이 끊겼을 때, 살아있는지 검사를 위해 TMM에게 재연결을 시도한다.
이와 관련된 로그는 다음과 같고 INFO 로그 레벨로 출력된다.
2011 TMM connection closed : %d
만약 TMM과 연결이 성공하면 TMM이 해당 CLH에게 SIGTERM 시그널을 보내 그 CLH를 종료시킨다. 이와 관련된 TMM 로그는 다음과 같다.
TMM3067 SIGTERM sent to disconnected CLH, pid = %d
-
NODE 절에 MAC=Y일 경우
다른 Tmax 프로세스와 마찬가지로 TMM과의 연결이 끊기는 순간 FATAL 로그를 출력하고 종료한다. 이와 관련된 로그는 다음과 같고 FATAL 로그 레벨로 출력된다.
2011 TMM connection closed : %d
-
관련 이슈 : IMS 115531
-
-
CLHQTIMEOUT 개선
-
이전 버전에서는 체크하는 주기가 35초로 고정되어 있다. CLHQTIMEOUT 가 35초보다 작게 설정할 경우 큐타임아웃이 발생하지 않아 35초보다 작을 경우에도 정확하게 타임아웃 체크가 동작하도록 기능을 개선하였다. SVRQTIMEOUT도 동일하다.
-
관련 이슈 : IMS 111648
-
2.2. 클라이언트/서버
-
libsvr*, libtms*에서 openssl 라이브러리 함수/변수명 변경
-
다음과 같이 라이브러리 함수/변수명이 변경되었다.
변경 전 변경 후 RC4
_lspf_RC4
RC4_options
_lspf_RC4_options
RC4_set_key
_lspf_RC4_set_key
RC4_version
_lspf_RC4_version
-
관련 이슈 : IMS 115833
-
2.3. 도메인 게이트웨이
-
CLOPT -p 옵션의 메시지 전문 출력을 LOGLVL별로 지정할 수 있도록 기능 변경
-
기존에는 CLOPT -p 옵션 및 LOGLVL=DEBUG4을 설정하면 거래요약정보 및 전문을 모두 출력했다.
해당 버전 이후 DEBUG1로 설정하는 경우 전문을 제외한 한 줄만 로깅되고, DEBUG2 이상 설정하는 경우 전문을 포함하여 로깅할 수 있도록 기능을 변경하였다.
-
관련 이슈 : IMS 114185
-
2.4. 관리 도구
-
gwi, txgwi, ntxgwi, jgwi 등의 명령을 수행하면 Hang이 걸리는 현상 개선
-
게이트웨이(Domain GW, JEUS GW, TUXEDO GW)가 기동 도중에 Listen해야 하는 포트를 다른 프로세스가 선점하고 있어서 Listen이 실패하는 경우에 이 상태에서 tmadmin에서 gwi, txgwi, ntxgwi, jgwi 등의 명령을 수행하면 Hang이 걸리는 현상이 있다.
-
Listen port를 사용하기 위해 대기하는 동안 TMM으로부터 들어오는 요청을 받아서 처리할 수 있도록 개선하였다.
-
관련 이슈 : IMS 103483
-
3. 버그 패치
3.1. ENGINE
-
UCS 서버 추가 기동할 때 outbound cpc로 스케줄링되는 현상 수정
-
서버가 추가 기동되면서 cpc를 등록하는 과정에서 cpc 채널이 등록이 완료된 순간 현 시점에 큐잉된 것을 꺼내서 스케줄링한다. 추가로 등록하는 cpc 채널이 인바운드인 경우 문제가 없지만, 아웃바운드일 경우 처리가 안되는 현상이 있었다. 인바운드와 아웃바운드를 구분하여 스케줄링하도록 수정하였다.
-
관련 이슈 : IMS 79295
-
-
TMAXGW 비정상 종료될 때 클라이언트에게 잘못된 메시지 타입을 전달하는 오류 수정
-
TMAXGW가 비정상 종료되었을 때 클라이언트에 XA_COMMIT, XA_PREPARE의 에러 응답 메시지가 전송되어 다음의 에러가 발생하는 문제가 있다.
CLI 3039 internal error : unknown message type :2112 [CSC5713]
-
XA 관련 메시지는 CLH와 TMS 혹은 트랜잭션 지원 게이트웨이 간에 오고 가는 메시지 타입으로 CLH가 트랜잭션 게이트웨이와의 연결이 끊겼을 때 XA 메시지 타입이면 클라이언트에게 응답을 주지 않도록 수정하였다.
-
관련 이슈 : IMS 103569
-
-
기동 중인 서버가 없을 때 CLL이 비정상 종료로 재기동되면 발생하는 문제 수정
-
기동 중인 서버가 없을 때 CLL이 비정상 종료로 재기동되면 CLH와 연결을 맺지 못하는 현상을 수정하였다.
-
관련 이슈 : IMS 108258
-
-
booting time over가 발생하는 경우 서버명이 unknown으로 출력되는 현상 수정
-
boottime 계산을 위해 내부적으로 index를 관리하는데, cfgadd로 서버가 추가되는 경우 대해서는 index 값이 초기화되지 않은 문제를 수정하였다.
-
관련 이슈 : IMS 107128
-
-
TMSTYPE=STD_MT를 설정할 때 오류 수정
-
TMSTYPE=STD_MT를 설정할 때 다음의 에러가 발생하는 오류를 수정하였다.
CLH2131 invalid thri: 4
-
STD_MT 타입으로 지정하면 tx_commit(), tx_rollback() 요청이 TMSTHREADS 이상 발생할 때 CLH2131 에러가 발생하고 클라이언트 또는 서버로 응답이 전송되지 않는 문제를 수정하였다.
-
동시에 TMS로 요청하는 건수가 많아지는 경우에 갑자기 TMS로 더 이상 요청이 전달되지 않는 문제를 수정하였다.
-
slog에서 thread id가 음수로 나오는 문제를 수정하였다.
-
여러 번 XA 요청이 수행된 이후에 Tmax를 정상적으로 tmdown할 때 TMS가 비정상 종료되는 문제를 수정하였다.
-
관련 이슈 : IMS 107299
-
-
CLH를 재기동할 때 lock file을 다른 프로세스가 사용 중인 경우 문제 수정
-
CLH가 재기동할 때 도메인 게이트웨이의 -c 옵션이 설정되어 있으면(다른 서버 프로세스에서 path/clhld000 lock 파일을 사용 중) CLH가 기동과정에서 lockf() 함수에서 대기하는 문제가 있다.
CLH가 기동하면 lock 파일에 의해서 대기상태에 빠지지 않도록, 기존 파일을 삭제하고 항상 새로운 파일을 생성하도록 수정하였다.
-
관련 이슈 : IMS 106794
-
-
멀티 노드 환경에서 TMM 비정상 종료 현상 수정
-
네트워크 지연 등으로 상대 TMM과 연결을 확인하는 과정에서 잘못된 메모리를 참조하여 TMM이 비정상 종료되는 문제를 수정하였다.
-
관련 이슈 : IMS 112078
-
-
tmdown -g svgname 후 POD 서버를 호출할 때 기동하지 않는 문제 수정 및 -b 기능 추가
-
POD 형태의 서버가 tmdown -g svgname 시점에 프로세스가 기동되어 있지 않다면, 서비스 요청이 들어와도 기동하지 않는 문제를 수정하였다.
-
POD 형태의 서버가 tmdown -b -g svgname 시점에 프로세스가 기동되어 있지 않다면, 서비스 요청이 들어오면 기동하지 않도록 기능을 추가하였다.
-
관련 이슈 : IMS 112124
-
-
CUSTOM GATEWAY 서버 재기동할 때 발생하는 문제 수정
-
CUSTOM GATEWAY 서버가 재기동할 때 다음의 에러가 발생하는 문제를 수정하였다.
TMM3033 svr (*) booting time (10) is over
-
관련 이슈 : IMS 112051
-
-
DomGW를 재기동할 때 발생하는 문제 수정
-
DomGW를 재기동할 때 다음의 에러 메시지가 출력되는 문제를 수정하였다.
TMM3004 SVR (gw) is restarted the 1th time
-
관련 이슈 : IMS 115478
-
-
ENVFILE에 환경변수 설정 후 tmboot로 서버를 기동할 때 tmboot가 비정상 종료되는 현상 수정
-
기동 과정에서 ENVFILE의 변수를 fgets로 한 번에 읽어 들이는 버퍼의 길이가 1024이고, 읽은 후 ${} 환경변수 패턴이 존재하면 해당 값을 치환하는 과정에서 치환된 최종 문자열 길이가 버퍼 크기를 초과하면서 다른 변수(fgets에 쓰이는 file pointer)를 깨트리는 문제가 있다.
-
환경변수 path 길이를 기존 1024byte에서 65536byte(=64KB)로 변경하였다. 단, 플랫폼이나 컴파일 최적화에 따라 64KB보다 클 수 있다.
다음의 경우에 적용된다.
-
ENVFILE 항목에 file을 설정한 후 tmboot로 일반 서버가 기동
-
ENVFILE 항목에 file을 설정한 후 tmadmin rst로 일반 서버가 기동
-
ENVFILE 항목에 file을 설정한 후 tmm로(재기동) 일반 서버가 기동
-
ENVFILE 항목에 file을 설정한 후 tmboot로 TCPGW 서버가 기동
-
tmaxreadenv(file)
-
racd -i file
-
-
관련 이슈 : IMS 117013
-
-
서버에 CLOPT -r을 설정하는 경우 발생하는 문제 수정
-
[-r] 옵션을 설정할 때 다음의 현상에 대해서 수정하였다.
-
SERVER 절 CLOPT -r 옵션을 사용하면 서비스 타임아웃으로 서버가 TPEXIT로 종료되면 restart count를 증가시키지 않는 문제
-
gperiod가 지난 이후 restart count를 초기화해 주는 않는 문제
-
masrstart가 tmdown -S를 수행할 때 초기화되지 않는 문제
-
-
관련 패치 : TMM
-
관련 이슈 : IMS 101667
-
-
TLM이 TXLOG 파일을 복구할 때 마지막 XID 채번 오류 수정
-
Tmax가 재기동하면 TLM은 TXLOG 파일에 데이터가 존재하면 마지막 XID + 10240 번호를 CLH에게 전달하고, 데이터가 존재하지 않으면 현재시간 % 0xFFFF 모듈러 연산값을 초기값으로 CLH에게 전달한다. 그리고 CLH는 이 시작값부터 트랜잭션을 요청할 때 XID를 순차적으로 발급한다.
위 과정 중 TLM이 마지막 XID 채번 과정에서 항상 현재시간 % 0xFFFF 값을 전달하는 버그가 발생해서 중복된 XID로 존재하게 되어, 복구 과정 중 실제 decision은 롤백이나 며칠 전 검색된 XID는 decision이 커밋이라서 실제 decision은 롤백이나 커밋이 수행되는 현상이 발생하는 오류를 수정하였다.
-
관련 패치 : TLM
-
관련 이슈 : IMS 116341
-
-
SVRQTIMEOUT 기능을 사용할 때 잘못된 에러가 출력되는 현상 수정
-
CLH0051 에러만 발생해야 하는데 CLH0922 에러가 발생하는 현상을 수정하였다.
-
동적설정으로 timeout 0으로 off시킨 이후에 svrlib에서 무조건 EQPURGE 에러 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 111648
-
3.2. 클라이언트 / 서버
-
tmadmin API를 하는 경우 메모리 누수 발생 수정
-
tmadmin API에서 TMADM_SVC_STAT, TMADM_SVC_STAT_EX를 조회할 때 메모리 누수가 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 103322
-
-
MultipleRM를 사용하는 경우 tmax_is_xa() 함수 반환값 오류 수정
-
MultipleRM를 사용하는 경우 tmax_is_xa() 함수가 XA임에도 Non_XA가 반환되는 현상을 수정하였다.
-
관련 이슈 : IMS 109734
-
-
클라이언트에서 MultipleRM 서비스를 트랜잭션으로 묶어 호출하는 경우 xa_start 에러 발생 수정
-
클라이언트에서 MultipleRM 서비스를 트랜잭션으로 묶어 32번 초과 호출(tpcall)하면 서비스를 호출할 때마다 bqno를 증가시킨다. Oracle의 경우 bqno가 32개 초과일 경우 xa_start 에러가 발생한다.
서비스를 호출할 때 bqno를 무조건 증가시키지 않고, 필수적인 경우에만 증가하도록 수정하였다. (tpcall만 해당함)
-
관련 이슈 : IMS 108631
-
-
fbinit(), fbput()를 호출할 때 FBEVTSYNTAX(bad viewfile) 발생 현상 수정
-
tpalloc("CARRAY")로 할당한 버퍼를 fbinit() 호출하면 FBEVTSYNTAX(16) 에러를 리턴하는 문제가 발생하였다.
Tmax 5.0부터는 FDL 함수를 사용할 때 tpalloc("FIELD")로 할당한 버퍼만 사용할 수 있도록 개선되었는데 Tmax 4.0에서는 이러한 버퍼 타입 체크 로직이 수행되지 않으며 버전 업그레이할 때 문제가 되고 있다.
-
CARRAY 타입 등 FIELD 타입 이외의 버퍼를 fbinit() 호출하는 경우 해당 버퍼의 유형을 FIELD 타입으로 변경하였다.
-
FIELD 타입 이외의 버퍼를 FDL 함수에 사용할 때 Tmax 4.0 호환을 위해 에러 처리 로직을 제거한다. 즉, 에러를 발생시키지 않고 FDL 함수가 수행되도록 한다. 대신 잠재적 위험이 있기 때문에 다음 에러 로그를 프로세스 당 최초 1회만 출력한다.
CLI0248" "SVR0248 buffer type error(CARRAY). use FIELD type. [FDL0515]
-
TMAX_TRACE를 설정할 때 남겨지는 로그에서 FBEVTSYNTAX 대신 FBESETVER로 수정하였다.
-
관련 이슈 : IMS 112081
-
-
tmadmin() API의 TMADM_SVR_CONF 명령 호출할 때 TPEINVAL 오류 발생 수정
-
관련 이슈 : IMS 114068
-
-
tpstart 없이 txinfo(NULL) 호출할 때 비정상 종료되는 현상 수정
-
관련 이슈 : IMS 116481
-
-
tx_begin에서 TDL의 암시적 버전 정합성을 사용할 때 문제 수정
-
다음의 순서로 진행되는 TOUPPER 서비스 플로우에서 tpreturn(), tpforward()에서 암시적 정합성 제공을 위해 내부적으로 트레일러 메시지를 사용자 메시지 뒤에 덧붙여서 Tmax 사이에서 전달한다.
-
Tmax config에 TDL=Y로 설정
-
Tmax 클라이언트가 함수를 다음의 순서로 호출
tx_begin -> tpcall(FORWARD) -> tx_commit
-
Tmax 서버가 FORWARD(tpforward(TOUPPER))를 수행
이때, 트레일러 메시지의 길이를 잘못 계산하여 사용자 메시지의 길이가 10byte 늘어나는 현상을 수정하였다.
-
-
관련 이슈 : IMS 114518
-
-
tpstart 없이 tx_info 호출하는 경우 동작 변경
-
Tmax 5.0부터 tpstart가 되어 있지 않은 상태에서 호출할 때에는 TPEPROTO, TX_PROTOCOL_ERROR 에러가 발생한다. 그러나 Tmax 4.0에서는 0으로 반환되어 Tmax를 업그레이드할 때 에러 코드가 달라서 문제가 발생하였다. 이에 대해 Tmax 4.0과 동일하게 리턴 코드를 변경하였다.
추가로 다음 함수들에 대해서도 tpstart가 되어 있지 않은 상태에서 호출하는 경우 0이 반환되도록 수정하였다.
- tx_info - tx_set_commit_return - tx_set_transaction_control - tx_set_transaction_timeout
-
관련 이슈 : IMS 114518
-
-
Tmax Core 파일의 gdb trace에서 Tmax full path를 줄여서 출력되도록 수정
-
관련 이슈 : IMS 114518
-
-
TDL에서 TMAX_DEBUG를 지정할 때 메시지 출력 문제 수정
-
TDL에서 TMAX_DEBUG를 지정할 때 메시지가 로그 파일만 기록되고 터미널 화면에는 출력되지 않는 문제를 수정하였다. TMAX_DEBUG 지정된 상태에서 환경변수 TMAX_ERR_STDOUT=Y를 설정하면 로그 파일에도 기록하고, 터미널 화면에도 출력한다.
-
관련 이슈 : IMS 114552
-
-
tdlcall() 호출할 때 Core 발생 문제 수정
-
Tmax 5.0에서 char[] 타입의 버퍼가 리팩토링으로 불필요해서 제거되어 Tmax 5.0은 4.0에 비해서 tdlcall() 함수의 stack frame 크기가 작다.
user_function에서 stack overflow를 했을 때 Tmax 4.0의 tdlcall()은 stack frame 크기가 커서 사용자 함수 호출 이후에 사용하는 return address, parameter가 깨지지 않는다. Tmax 5.0은 위의 메모리가 깨지면서 Core가 발생한다.
Tmax 4.0과 동일하게 사용자 함수에서 stack overflow를 발생시킬 때 tdlcall() 함수의 stack frame에 여유 버퍼(4000byte)를 추가해서 중요 메모리 영역을 보호하도록 수정하였다.
-
관련 이슈 : IMS 114518
-
3.3. 도메인 게이트웨이
-
CLOPT -p 옵션을 사용할 때 메시지 전문이 출력되지 않는 문제 수정
-
관련 이슈 : IMS 114185
-
3.4. TCP 게이트웨이
-
ping msg를 사용할 때 libtcpgw의 get_msg_info의 반환값이 -1인 경우 Core가 발생하는 현상 수정
-
관련 로그
(E) SVR6105 user routine error: get_msg_info [HLINK9050] (E) SVR0030 read error [HLINK9041]
-
관련 이슈 : IMS 110764
-
-
chk_pong_msg()에서 양수를 반환하는 경우 CLH로 42번 메시지가 전달되는 현상 수정
-
관련 로그
(E) CLH0209 internal error : invalid msg type(42) from server [CLH0034]
-
관련 이슈 : IMS 115415
-
-
TCPGW에서 set_ping_msg를 사용할 때 발생하는 문제 수정
-
set_ping_msg()가 init_remote_info()보다 먼저 호출되는 오류를 수정하였다.
TCPGW에서 set_ping_msg를 사용할 때 타임아웃 체크 주기가 잘못된 현상을 수정하였다. TCPGW 내부 체크 로직이 interval 주기로 ping msg를 보낸 후 interval 초 동안 타임아웃을 체크하지 않게 구현되어 있어 딜레이가 발생하였다.
ping 전송은 interval 주기로 보내고 전송 후 즉시 pong 기다리는 주기를 타임아웃 시간으로 동작하게 수정하였다.
-
TCPGW에서 헬스체크 주기마다 메모리가 증가하는 현상을 수정하였다.
헬스 체크를 위해 ping 메시지를 리모트로 전송한 뒤, 리모트에서 ping 응답(pong)이 수신되면 chk_pong_msg() 콜백함수가 호출된다. 이 콜백함수에서 양수를 리턴하면 헬스 체크용 메시지로 판단하고 get_msg_info() 콜백이 호출되지 않고 종료된다. 이때 pong 메시지에 대한 버퍼를 해제하지 않는 문제를 수정하였다.
-
관련 이슈 : IMS 117622, 110764
-
3.5. Tuxedo 게이트웨이
-
alive check 응답 메시지가 에러 응답일 때 일반 메시지처럼 오인하여 에러 로깅되는 현상 수정
-
관련 오류 메시지
GATEWAY9003 Error reply from remote gateway :diagonostic [6] tran [0:0:0] [TUXGW0409]
-
관련 이슈 : IMS 100700
-
-
tuxgw -n 옵션을 32bit Linux에서 사용할 때 TUXGW에서 비정상 종료 현상 수정
-
관련 이슈 : IMS 108634
-
-
TUXGW Table overflow 에러 수정
-
tpacall을 호출하는 경우 내부 제한 값인 MAXSACALL 값이 설정되지 않는 오류를 수정하였다.
tpacall을 호출하는 경우 내부 제한 값인 MAXSACALL이 타임아웃이 발생하는 경우 테이블이 감소되지 않아 Table overflow 에러가 발생하였다. 이를 타임아웃될 때 테이블이 감소되도록 수정하였다.
-
관련 오류 메시지
(E) GATEWAY0209 internal error : request table overflow [TUXGW0014]
-
관련 이슈 : IMS 109504
-
-
접속된 TUXGW로 접속이 시도된 경우 해당 접속의 IP, Port를 포함한 에러 로그 남기도록 수정
-
tuxgw log
(E) GATEWAY3008 another connection from 192.168.15.116:48052 [TUXGW0162] (E) GATEWAY3010 connection error from remote gateway [TUXGW0002]
-
관련 이슈 : IMS 108835
-
-
TUXGW에서 프로토콜 에러가 발생하는 현상 수정
-
Tuxedo에서 null을 데이터로 반환했을 경우 TUXGW에서 프로토콜을 제대로 인식하도록 수정하였다.
(E) GATEWAY9002 Protocol error : [TUXGW0507]
-
관련 이슈 : IMS 108835
-
-
TUXGW alive check가 동작하지 않는 현상 수정
-
TUXGW Inbound XA 요청을 받은 후 응답을 주기 전에 alive check를 하면 이후 alive check를 하지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 108835
-
-
TUXGW에서 log macro가 동작하지 않는 현상 수정
-
관련 이슈 : IMS 108835
-
-
이미 에러 처리된 요청에 대해서 다시 정상 응답 메시지를 요청한 곳으로 반환하는 문제 수정
-
TUXGW에서 Tuxedo로의 요청에 대해서 타임아웃이 발생하면 해당 요청에 대해서 TPETIME 에러 응답을 요청한 곳으로 반환한다. 그런데 TUXGW로의 요청이 많은 부하 상황에서 Tuxedo로부터 타임아웃 처리된 응답이 들어오게 되면, 이미 에러 처리된 요청에 대해서 다시 정상 응답 메시지를 요청한 곳으로 반환하는 문제가 있다.
이 경우에 그 이후에 들어오는 요청은 다음의 에러가 발생하였다.
(W) GATEWAY0209 internal error : -1 [TUXGW0118]
TUXGW에서 이미 에러 처리한 요청에 대해서 Tuxedo로부터 응답이 들어올 경우에는 아래 로그를 출력하고 폐기시키도록 수정하였다.
(W) GATEWAY0209 internal error : invalid msg from rgw 0, maybe a message arrived after timeout, seqno 0 [TUXGW0161]
-
관련 이슈 : IMS 101645
-
3.6. Java 게이트웨이
-
JEUSGW, JEUSGW Async에서 리모트와 연결이 되어도 로그가 출력 안되는 현상 수정
-
연결에 실패하는 경우 다음 로그들이 출력된다.
-
리모트로부터의 연결 요청에 대한 수락 실패
(E) GATEWAY3010 connection error from remote gateway [JGW0002]
-
리모트 주소가 1개일 때
1) 즉시 에러 발생
(I) GATEWAY0046 socket connect error :rgw(c) host[xxx.xxx.xxx.xxx], port[portno], type[16(primary)|32(backup)], [재시도 index : 신규연결채널 index] [COM3605]
2) 요청후 대기 중 에러 발생
(I) GATEWAY0046 socket connect error :rgw(c) host[xxx.xxx.xxx.xxx], port[portno], type[16(primary)|32(backup)], [0:0] [COM3609]
-
리모트 주소가 2개 이상일 때
1) Primary 연결 요청이 실패
(I) GATEWAY0046 socket connect error : xxx.xxx.xxx.xxx portno [JGW0109]
2) Backup 연결 요청이 실패
(I) GATEWAY0046 socket connect error : xxx.xxx.xxx.xxx portno errno [JGW0112]
-
-
관련 패치 : JEUSGW / JEUSGWA
-
관련 이슈 : IMS 111280
-
-
MAXINRGW까지 incoming connection 제한이 안되는 현상
-
JEUSGW 인바운드를 연결하는 경우 MAXINRGW + 30 설정값만큼 연결되지 않는 현상을 수정하였다.
-
인바운드 세션에 대해 alive check하는 현상을 수정하였다.
-
관련 패치 : JEUSGW
-
관련 이슈 : IMS 103171
-
-
게이트웨이에 잘못된 옵션을 설정한 경우 Core가 발생하는 현상 수정
-
SUN 9/10에서 jeugw -a 등 잘못된 옵션을 설정하면 Core가 발생하여 수정하였다.
-
관련 이슈 : IMS 114154
-
-
SUN에서 JEUSGWA 아웃바운드를 요청하는 경우 Core가 발생 현상 수정
-
관련 이슈 : IMS 105859
-
-
WebT 클라이언트에서 JEUSGW RQ 서비스를 요청하는 경우 문제 수정
-
WebT 클라이언트에서 JEUSGW RQ 서비스를 요청하는 경우 invalid queue name이 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 104273
-
-
게이트웨이에서 전문 로깅 기능을 사용할 때 게이트웨이가 비정상 종료하는 오류 수정
-
JEUSGW, TMAXGW, TUXGW에서 전문 로깅 기능을 사용할 때 %n 문자열이 포함된 경우 비정상 종료하는 오류를 수정하였다.
-
JEUSGW
clopt="-D4"
-
TMAXGW
clopt="-p"
-
TUXGW
clopt="-D"
-
-
관련 이슈 : IMS 115860
-
3.7. TDL
-
tdlupdate 버그 및 성능 개선
-
tdlupdate -i 옵션을 사용하는 경우 반영해야 하는 대상 파일이 존재하지 않을 때 중단하는 현상을 수정하였다.
-
tdlupdate를 수행할 때 대상 파일에 대한 access가 여러 포인트에서 추가되어 기존 대비 2배 느려지는 현상이 발생하여 access를 최소화하도록 수정하였다.
-
backup file update 방식을 기존에는 라이브러리 내의 함수 하나마다 매번 backup file update를 개별적으로 실행했다. 이를 한번에 처리하도록 개선하였다.
-
TDL 공유 메모리에 정보를 반영하는 시점에는 SIGKILL, SIGSTOP, SIGCONT를 제외한 모든 시그널에 대해서 중단되지 않도록 signal block 기능을 추가하였다.
위 항목 외의 시점에 <Ctrl>+C 등의 시그널을 받으면 파일 복사 등의 과정을 모두 원래대로 복원시킨다.
-
대상 시그널 : SIGHUP, SIGINT, SIGQUIT, SIGTERM, SIGUSR1, SIGUSR2
-
관련 모듈 : tdlclean / tdlupdate
-
-
copy 방식을 기존의 /bin/cp를 이용하는 방법 외에 자체적으로 복사하는 기능을 추가하였다.
tdl.cfg에 다음 옵션을 추가한다. (기본값: mmap)
COPY=[cp|mmap]
항목 버전 cp
/bin/cp를 이용하는 방법이다.
mmap
tdlcall 내부적으로 파일 복사를 메모리 맵 방식으로 복사하는 것으로 cp에 비해서 약간의 성능상의 이점이 있다.
-
관련 이슈 : IMS 104752
-
-
AIX에서 TDL 공유 메모리(tdlshm)에 변수가 함수처럼 올라가는 현상 수정
-
AIX 플랫폼의 특성상 nm으로 전역 변수까지 검색되어 변수가 TDL 함수로 등록되는 현상을 수정하였다.
tdl.cfg에 다음 옵션을 추가한다.
CUSTOMCMD=Y
-
관련 패치 : tdlinit / tdlupdate
-
관련 이슈 : IMS 107466
-
-
tdlupdate -p 업데이트할 때 tdlupdate 오류 발생하는 현상 수정
-
tdlupdate -p 업데이트할 때 tdl.cfg(LANG=COBOL) 설정이 있을 경우 tdlupdate 오류가 발생하는 현상을 수정하였다.
-
관련 오류 메시지
(E) TDLUTIL0078 file rename error: /run/tdlcall2v_s.so -> /run/tdlcall2v_s.5728054d [TDL0447] [No such file or directory]
-
관련 패치 : tdlupdate
-
관련 이슈 : IMS 110591
-
-
tdlupdate -l list 수행할 때 list 파일이 null인 경우 오류가 발생하는 현상 수정
-
관련 오류 메시지
(I) TDLUTIL0040 invalid arguments [TDL0401] (E) TDLUTIL0001 memory allocation error : size = 0 [TDL0434]
-
관련 패치 : tdlupdate
-
관련 이슈 : IMS 114469
-
-
tdlupdate가 수행되는 동안 tdlcall()이 호출되면 에러가 발생하는 현상 수정
-
tdlupdate가 수행되는 동안 tdlcall()이 호출되면 "library not found" 에러가 발생하는 현상을 수정하였다.
-
tdl.cfg의 MODLE=SINGLE 구성에서만 발생한다.
-
관련 이슈 : IMS 113724
-
3.8. 유틸리티
-
CFL3110 출력 오류 수정
-
CFL3110을 출력할 때 실제 CPC 값 보다 크게 나오는 현상을 수정하였다.
(E) CFL3110 more CPC(100) than MAXCPC(3) are defined at node [CFL0955]
-
관련 이슈 : IMS 102921
-
-
cfl에서 cfgadd로 서버 서비스를 추가할 때 메모리의 상황에 따라 실패하는 현상
-
메모리 오류로 추가된 내역의 순서가 바뀌면서 TMM에서 에러가 발생하지 않도록 수정하였다.
-
관련 패치 : cfl
-
관련 이슈 : IMS 111598
-
-
mksvr 사용하는 경우 svctab 권한이 없을 경우 비정상하는 오류 수정
-
mksvr를 사용하는 경우 svctab 권한이 없을 경우 Err#13 EACCES 발생 후 SIGSEGV로 비정상 종료되는 현상이 있다.
이 경우 에러메시지가 출력되도록 수정하였다.
$ mksvr -o svr2 -f svr2.c -s TOUPPER,TOLOWER -v -64 cp: cannot create regular file `svr2_svctab.c': Permission denied total 2 svcs added. cp /home/tmax2/tmax/svct/svr2_svctab.c svr2_svctab.c cannot open svr2_svctab.c : Permission denied
-
관련 이슈 : IMS 102921
-
3.9. 관리 도구
-
st -s/p -x gateway_name 잘못 표기되는 문제 수정
-
st -s/p -x gateway_name의 mintime, utime*, stime*이 잘못 표기되는 문제 수정하였다.
-
CPU Time을 사용하지 않는 게이트웨이 타입의 경우 usertime, systime을 사용하지 않도록 수정하였다. (0에서 변경되지 않음)
-
관련 이슈 : IMS 103525
-
-
tmadmin에서 gwi 모니터링할 때 No Alive Connection 나오는 현상 수정
-
alive check 메시지를 전송할 때 해당 세션의 상태를 READY에서 PING_REQUESTED로 변경하고, alive check 응답이 들어오면 다시 READY로 변경한다. 이 사이에 tmadmin gwi 명령이 수행되면, 게이트웨이(Tmax/JEUS/Tuxedo)에서 상태 정보를 체크하게 되는데 이때 READY 상태의 세션만 체크하고 있어서 No Alive Connection으로 나타나는 현상을 수정하였다.
-
JEUSGW에서 XA 처리 상태에서도 No Alive Connection 발생하고 있어 이에 대해서도 발생하지 않도록 수정하였다.
-
관련 이슈 : IMS 112228
-
3.10. HostLink
-
HOSTLINK 환경설정 파일 설정 후 메모리가 증가하는 현상 수정
-
HOSTLINK 환경설정 파일 LOGGING 절을 설정하고 운영하면, 데이터를 로깅할 때마다 메모리가 증가하는 현상을 수정하였다.
-
관련 이슈 : IMS 102206
-
-
LU62RGW가 비정상 종료하는 현상 수정
-
LU62RGW에서 메인프레임으로부터 SNA를 통해 다수의 트랜잭션 요청이 동시에 들어오는 상황에서 LU62RGW 프로세스가 stack overflow가 발생하면서 비정상 종료하는 현상을 수정하였다.
-
관련 이슈 : IMS 102206
-
3.11. RPC
-
Entgw에서 memory leak 현상 수정
-
Entera 서버로부터 요청을 받아서 서비스를 수행하고 응답을 줄 때 일부 데이터를 free하지 않는 문제를 수정하였다.
-
관련 이슈 : IMS 101036
-