Tmax 5 SP2 Fix#5
본 장에서는 Tmax 5 SP2 Fix#5에 추가 기능과 변경 기능 그리고 버그 패치에 대해 간략히 설명한다. 상세한 설명은 관련 안내서를 참고한다.
1. 추가 기능
본 절에서는 추가된 주요 기능에 대해 설명한다.
1.1. ENGINE
-
Tmax 5 SP2에서 FD size를 FD_32768 버전 지원
-
Tmax 5 SP2는 기존 FD_16384뿐만 아니라
FD_32768
버전도 지원한다. -
릴리스 시 기본으로 FD_16384 버전을 배포하며,
FD_32768
버전은 요청 시 별도 포팅 릴리스를 통해 제공된다. -
관련 이슈: IMS 300065
-
1.2. 클라이언트/서버
-
server와 clh 사이에 socket buffer size를 조절할 수 있는 기능 추가
-
server절 CLOPT="-D socket buffer size" 옵션으로 설정한다.
-
CLH와 Server 간 통신에 사용되는 소켓의 버퍼 크기를 바이트 단위로 설정하는 기능으로, 기본값은 16384(16KB)이며, 설정하지 않으면 이 값이 자동 적용된다.
Server가 전송하려는 전문의 크기가 socket buffer size를 초과하면, CLH는 설정된 버퍼 크기만큼 데이터를 반복해서 읽어야 한다. 이로 인해 서버의 send buffer가 천천히 비워지면서 send() 호출 시 지연이 발생할 수 있다. 이때 -D 옵션을 통해 socket buffer size를 조절하여 지연을 완화할 수 있다. 단, OS마다 실제 socket buffer size 값은 다르게 설정될 수 있다.
-
사용 예시
*SERVER svr1 SVGNAME = svg1, MIN =1, MAX=1, CLOPT = "-D 102400"
-
관련 이슈: IMS 246419
-
-
Client에서 CLH로 메시지를 전송할 때 TCP_NODELAY 옵션 기능 추가
-
기존에는 WinTmaxStart()에서만 TCP_NODELAY 설정이 가능했으나, tpstart()에서도 설정할 수 있도록 개선하였다.
-
tpstart() 호출 시 환경변수 `TMAX_CLH_TCP_OPTION=YES`를 설정하면 TCP_NODELAY 옵션이 적용되도록 하였다.
-
이를 통해 클라이언트에서 메시지 전송 시 지연을 줄일 수 있도록 하였다.
-
관련 이슈: IMS 320733
-
1.3. 관리도구
-
운용 관리 명령의 slog 기록 기능 추가
-
tmadmin에서
운용 관리
명령 실행 시 성공/실패 여부를 slog에 기록하는 기능을 추가하였다. -
suspend, resume 등 Tmax 시스템의 주요 운용 명령을 slog에 기록함으로써 명령 이력을 자동으로 남기고, 관리 편의성을 높일 수 있다.
-
사용 예시
$$1 tmax (tmadm): sp -v svr2 svr(svr2) is suspended $$2 tmax (tmadm): rs -v noserver no such svr(noserver) (slog) ADM.268121.150731:(I) ADM4000 ADM_SUSPEND Success command(sp -v svr2) [ADMC001] ADM.268121.150752:(I) ADM4000 ADM_RESUME Failure command(rs -v noserver) [ADMC000]
-
관련 이슈: IMS 290748
-
1.4. 유틸리티
-
svcrpt 초/분 단위 출력 기능 추가 및 시간별 출력 형식 변경
-
svcrpt -n h|m|s
사용 시 시/분/초 단위로 출력된다. (기본값: h) -
기존 svcrpt는 한 시간 간격으로 가로 방향 출력되었으나, 세로 출력 형식으로 변경되었다.
-
사용 예시
$ svcrpt -i svclog.07032025 -n s Services issued between Thu Jul 3 17:37:30 2025 and Thu Jul 3 17:37:37 2025 TOUPPER Time Num Avg ------------ ------------ ------------ 17:37:30 1 0.000164 17:37:33 2 0.000035 17:37:34 1 0.000012 17:37:36 1 0.000058 ------------ ------------ ------------ total 5 0.000061
-
관련 이슈: IMS 270266
-
-
svcrpt 실행 시 서비스가 호출되지 않은 시간에도 Time/Num이 출력해주는 -a 옵션 기능 추가
-
svcrpt -a
사용 시 서비스가 호출되지 않아도 설정된 시간 간격에 따라 Time, Num, Avg 값이 출력되도록 설정한다. -
엑셀에서 시간에 따른 서비스 수행 그래프를 만들 때 유용하다.
-
사용 예시
$ svcrpt -i svclog.07032025 -n s -a Services issued between Thu Jul 3 17:37:30 2025 and Thu Jul 3 17:37:37 2025 TOUPPER Time Num Avg ------------ ------------ ------------ 17:37:30 1 0.000164 17:37:31 0 0.000000 17:37:32 0 0.000000 17:37:33 2 0.000035 17:37:34 1 0.000012 17:37:35 0 0.000000 17:37:36 1 0.000058 ------------ ------------ ------------ total 5 0.000061
-
관련 이슈: IMS 290775
-
-
cfl 명령에서 COUSIN 그룹의 LOAD 설정값 검증 기능 추가
-
cfl 시 COUSIN으로 설정된 각 서버 그룹의 LOAD 값이 규칙대로 설정되었는지 체크할 수 있도록 기능을 추가하였다.
-
LOAD값 규칙
-
LOAD 값이 0보다 클 경우: 모든 서버 그룹의 LOAD 값이 1 이상
-
LOAD 값이 0인 경우: 모든 서버 그룹의 LOAD 값이 0
-
LOAD 값이 -1인 경우: 모든 서버 그룹의 LOAD 값이 -1
-
LOAD 값이 -2인 경우: 모든 서버 그룹의 LOAD 값이 -2 또는 -3
-
-
사용 예시
$ cfl -i 341298.m (E) CFL3202 LOAD mismatch: svg1 has LOAD=-2, but COUSIN gw13 has LOAD=1 [CFL0314]
-
관련 이슈: IMS 341298
-
1.5. TDL
-
트랜잭션 수행 중 External 변수 접근을 위한 tdlcall(TDL_RTLD_GLOBAL) 플래그 기능 추가
-
tdlcall*()의 flags에 TDL_RTLD_GLOBAL 플래그를 설정하면, 로드된 외부 심볼을 다른 모듈에서도 참조할 수 있게 된다. OpenFrame OSC 환경에서 External 변수에 접근할 필요가 있을 경우에 사용할 수 있다.
-
관련 이슈: IMS 272557
-
-
tdlupdate 시 일부 노드만 tdlupdate가 수행된 경우 오류 코드를 반환하는 -e 옵션 기능 추가
-
tdlupdate -e 옵션 사용 시 멀티 노드(MODE=SHARED) 환경에서 일부 노드에서 tdlupdate가 실패할 경우 에러 코드를 반환한다. 미설정 시 일부 노드에서 tdlupdate가 실패하더라도 마스터 노드에서는 성공 리턴값(0)을 반환한다.
-
사용 예시
$ tdlupdate -m func001 -e TDLUPDATE.redhat73.14389.174419:(E) TDLUTIL0028 socket connect error: nodename = node2, racport = 3478 [TDL0018] TDLUPDATE.redhat73.14389.174419:(I) TDLUTIL0095 /home/tmaxha/tmax/run/func001.64d5f4e3 is being processed [TDL0417] TDLUPDATE.redhat73.14389.174419:(I) TDLUTIL0118 Synchronization succeeded [TDL0064] TDLUPDATE.redhat73.14389.174419:(I) TDLUTIL0083 func001.64d5f4e3 updated successfully [TDL0443] $ echo $? 9
-
관련 이슈: IMS 272557
-
-
tdlcall/tdlload 수행 시간 측정 기능 추가
-
환경 변수
TDL_ENABLE_DL_TIMER=Y
를 설정하면, 디버그 라이브러리(libsvrd
,libclid
,libtdlcalld
)에서tdlcall*
,tdlload*
함수 호출 시dlopen
,dlsym
, 모듈 호출에 대한 수행 시간을 측정한다. (기본값: N) -
디버그 로그 예시
53937546.182625:(D1) SVR [DLOPEN][/home/tmaxha/tmax/run/tdlcall_A.680760c1] START:182625.800097, END:182625.800838, ELAP:0.000741 53937546.182625:(D1) SVR [DLSYM][tdlcall_A] START:182625.800872, END:182625.800875, ELAP:0.000003 53937546.182625:(D1) SVR [FUNC][tdlcall_A] START:182625.800949, END:182625.800950, ELAP:0.000001
-
관련 이슈: IMS 339865, 171058
-
1.6. HostLink
-
Linux에서 HostLink 모듈 기능 추가
-
Linux에서 HostLink 모듈을 지원한다.
-
관련 이슈: IMS 274149
-
1.7. 기타
-
헤더 파일 변경 내역 제공 및 버전 기능 추가
-
Tmax에서 제공하는 헤더 파일에 버전 정보를 기록하는 기능을 추가하였다.
-
각 헤더 파일의 변경 이력은
changelogs
하위 디렉터리에<헤더 파일명>.log
형식으로 제공되며, 릴리스 이후의 변경 사항이 리비전별로 추가 기록된다. -
대상 디렉터리는
/cobinc
,/topinc
,/tuxinc
,/usrinc
,/usrinc/tmaxrpc
이며, 이 중 일부 파일은 제외된다. -
헤더 파일 예시
/* -------------------------- usrinc/atmi.h -------------------------- */ /* */ /* Copyright (c) 2000 Tmax Soft Co., Ltd */ /* All Rights Reserved */ /* Version: 5.0 SP #2 Fix #5 r11882 (final_release) */ /* Change Logs: usrinc/changelogs/atmi.h.log */ /* */ /* ------------------------------------------------------------------- */
-
change log 파일 예시
/* ------------------ usrinc/changelogs/atmi.h.log ------------------- */ /* */ /* Copyright (c) 2000 Tmax Soft Co., Ltd */ /* All Rights Reserved */ /* */ /* ------------------------------------------------------------------- */ [5.0 SP #2 Fix #5 r11882 (final_release)] - 2025-07-17 * Fixed: * Added: Add header version to comment * Change:
-
관련 이슈: IMS 283360
-
2. 변경 기능
본 절에서는 변경된 주요 기능에 대해 설명한다.
2.1. 헤더 파일 변경 사항
헤더 파일 내 구조체 정의 및 함수 시그니처의 변경 여부를 기준으로 설명한다. 해당 항목이 변경된 경우 관련 API를 사용하는 모듈은 기존 바이너리와의 호환을 위해 재컴파일이 필요할 수 있다.
Tmax 5 SP2 Fix4 → Tmax 5 SP2 Fix5 릴리즈 사이에는 구조체 정의 또는 함수 시그니처의 변경 사항은 없습니다. |
2.2. ENGINE
-
TSKILLTIMEOUT 설정을 TSINITKILLTIMEOUT, TSDONEKILLTIMEOUT으로 분리
-
기존에는 TSKILLTIMEOUT으로 tpsvrinit(), tpsvrdone()의 타임아웃을 동일하게 설정했으나, 기동과 종료 시점을 분리해 각각 설정할 수 있도록 개선하였다.
-
TSINITKILLTIMEOUT은 tpsvrinit() 수행 중 hang 발생 시 서버 종료까지의 대기 시간을 지정한다.
-
TSDONEKILLTIMEOUT은 tpsvrdone() 수행 중 hang 발생 시 서버 종료까지의 대기 시간을 지정한다.
-
TSKILLTIMEOUT은 제거되었으므로 기존 설정을 사용하는 경우 반드시 확인이 필요하다.
-
관련 이슈: IMS 342294
-
-
TSM이 멀티 스레드 서버 타입 미지원하도록 변경
-
TSM(tmapm)이 STD_MT 서버 타입에서 한 스레드의 서비스가 타임아웃될 경우 해당 스레드나 프로세스를 종료하는 방식은 제거되었으며, STD_MT 타입에서는 더 이상 동작하지 않도록 변경하였다.
-
관련 이슈: IMS 261392
-
-
tmdown -s/-p 옵션 종료 시 TSDONEKILLTIMEOUT에 따른 서버 재기동 방지 기능 개선
-
tmdown -s 또는 -p 옵션으로 서버를 종료할 때 TSDONEKILLTIMEOUT이 동작해 서버가 종료되면, 기존에는 서버가 자동으로 재기동되는 문제가 있었다.
-
반면 tmdown -S, -A, -g 옵션에서는 동일 상황에서 재기동 없이 종료되도록 처리되고 있었다.
-
이번 수정으로 tmdown -s/-p 옵션 종료 시에도 재기동 없이 정상 종료되도록 일관성 있게 동작을 개선하였다.
-
관련 이슈: IMS 338658
-
2.3. 관리도구
-
ti, cfg -d, cfg -n의 *count 항목 출력 방식 개선
-
cfg -d/-n의 svrcount 항목에 MAXRQSVR, MAXGWSVR 개수를 제외한 실제 서버 개수만 출력되도록 변경되었다.
-
cfg -d의 svg/svr count가 각 노드별 값이 아닌 전체 노드의 합계로 출력되도록 변경되었다.
-
cfg -d 사용 시 svccount 항목이 추가로 출력되도록 변경되었다.
-
관련 이슈: IMS 281571
-
-
reopen_db 시 Server 및 TMS 개수 출력 기능 개선
-
xa 서버 그룹명 입력 시 해당 서버 그룹에 속한 Server와 TMS 개수가 출력되도록 개선하였다.
$$1 tmax1 (tmadm): reopen_db svg_ora DB reopen request sent (svrcnt : 1, tmscnt : 2)
-
관련 이슈: IMS 280635
-
-
help 사용 시 명령어들이 알파벳 순으로 정렬되도록 개선
-
help 명령어 실행 시 목록이 알파벳 순으로 정렬되어 출력되도록 수정하였다.
-
관련 이슈: IMS 289533
-
2.4. TDL
-
멀티 노드 환경(SHARED 모드)에서 tdlupdate 실행 시 지연 현상 개선
-
tdlupdate -N
옵션을 적용하면, 멀티 노드(MODE=SHARED) 환경에서 대상 모듈만 동기화되므로 전체 동기화에 비해 수행 시간이 단축된다. 옵션을 지정하지 않는 경우SRUNDIR
에 등록된 모든 모듈이LRUNDIR
과 동기화되며, 이로 인해 시간이 많이 소요될 수 있다. -
그러나 멀티 노드(MODE=SHARED) 환경에서의 안정적인 동기화를 위해서는
-N
옵션을 지정하지 않는 것을 권장한다. -
동기화 관련 문제가 발생하거나 서비스 안정성이 중요한 경우 부하가 적은 시간대를 선택하여
tdlupdate -c
옵션을 이용한 전체 동기화를 수행하는 것을 권장한다. -
관련 이슈: IMS 309269
-
-
tdlshm/tdlseqno -m/-M 옵션 사용 방식 통일
-
모든 tdl 유틸리티에서 -m/-M 옵션을 일관되게 반영하였다.
-
-m: 라이브러리명 (library)
-
-M: 함수명 (function)
-
-
tdlshm 및 tdlseqno의 기존 옵션 동작을 [-m module|-M library] 방식에서 [-m library|-M function] 방식으로 변경하였다.
-
옵션 변경에 따라 기존과 동일한 방식으로 사용할 경우 예상과 다르게 동작할 수 있으므로 주의가 필요하다.
-
관련 이슈: IMS 336543
-
2.5. TCP 게이트웨이
-
custom.h의 과도한 header size 정의로 인한 TCPGW 비정상 종료 현상 개선
-
TCPGW가 remote node의 request를 처리할 때 header를 읽는 buffer size를
msg_header_size
에 따라 재계산하도록 예외 처리를 적용하여, 과도한 header 크기로 인한 비정상 종료 현상을 개선하였다. -
단,
msg_header_t
구조체에는 메시지 메타데이터 수준의 필드만 정의해야 하며, 실제 데이터(payload)는 포함하지 않아야 한다. -
관련 이슈: IMS 335870
-
2.6. Java 게이트웨이
-
JEUSGW CLOPT -D 옵션 디버그 로그 개선
-
출력되는 디버그 로그의 의미를 이해할 수 있도록 개선하였다.
-
index[%d] → xa : clh cpc index[%d]
-
nonxa get clhi : index[%d] → nonxa : clh cpc index[%d]
-
reply_to_clh → reply_to_clh ind[%d]
-
-
CLOPT -D 옵션의 디버그 로그 출력 시 로그 메시지 앞에 'JEUSGW' 문구가 출력되도록 변경하였다.
-
CLOPT -D 옵션으로 출력되는 로그도 디버그 로그이므로, (I) 타입이 아닌 (D#) 타입으로 출력되도록 변경하였다.
-
CLOPT -D 옵션 로그의 모듈 이름과 로그 내용 사이에 공백이 삽입되도록 수정하였다.
-
디버그 로그 예시는 다음과 같다.
23376.175628:(D1) GATEWAY JEUSGW xa : clh cpc index[1] 23376.175628:(D1) GATEWAY JEUSGW reply_to_clh ind[1] 23376.175628:(D1) GATEWAY JEUSGW request_from_clh ind[1] msgtype[1003] svc[FDLINS]
-
관련 이슈: IMS 294110
-
2.7. 기타
-
설치 효율화를 위한 선택적 모듈 제공
-
사용 빈도가 낮은 일부 모듈은 기본 인스톨러에서 제외하여 설치 용량과 배포 효율성을 최적화하였다.
-
WebService Gateway (23개): tmmbfgen*, xwsdlgen*, untmmbfgen*, wsgw*, libexpatMT*, libhttpgw*, libwsgw*
-
SNMP Agent (2개): tmsnmpd*
-
Tmax RPC (22개): idlc*, librpccli*, librpcsvr*, librpcsql*, librpcsyb*, librpctbr*
-
WebAdmin (2개): twagent*
-
-
해당 모듈이 필요한 경우 IMS를 통해 요청 시 별도로 제공받을 수 있다.
-
-
tuxinc/atmi.h에 usrlinc/atmi.h를 함께 포함하도록 수정
-
턱시도 전환 AP 소스에서 atmi.h 헤더 파일의 include 순서로 인해 발생하던 컴파일 오류를 수정하였다.
-
관련 이슈: IMS 133211
-
-
oss zlib 버전 상향 (1.1.4 → 1.3.1)
-
zlib 압축 라이브러리의 버전을 1.1.4에서 1.3.1로 업그레이드하였다.
-
관련 이슈: IMS 343222
-
3. 버그 패치
본 절에서는 버그 수정된 내용에 대해 설명한다.
3.1. ENGINE
-
CLHOPT -x 1 설정 시 tmaxchk_conn(양수) 호출 때 slog에 '.CHK_CONN' 미출력으로 수정
-
CLHOPT -x 1 설정이 되어 있는 경우 tmaxchk_conn(양수) 호출 시 slog에 '.CHK_CONN’는 출력되지 않도록 수정하였다.
-
관련 이슈: IMS 265012
-
-
TSM이 cpc가 2 이상일 때 두 번째 이후 채널에 스케줄링된 서비스의 타임아웃 미체크 현상 수정
-
cpc가 2 이상일 때 cpc 2번째 이상 채널로 스케줄링 되는 서비스에 대해 TSM(tmapm)이 서비스 타임아웃을 체크하지 않는 현상을 수정하였다.
-
관련 이슈: IMS 261392
-
-
COUSIN SVG 구성 시 mksvr 서버의 서비스 미등록 현상 수정
-
한 노드에 두 개의 SVG가 cousin으로 구성된 환경에서 mksvr로 빌드된 서버의 서비스가 제대로 등록되지 않는 현상을 수정하였다.
-
관련 이슈: IMS 274905
-
-
서비스절에 FUNCNAME 미동작 현상 수정
-
서비스절에 FUNCNAME을 설정해도 동작하지 않는 현상을 수정하였다.
-
관련 이슈: IMS 279126
-
-
svclog가 날짜 변경 시점에 일부 로그가 유실 현상 수정
-
svclog가 날짜 변경 시점에 일부 로그가 유실 현상을 수정하였다.
-
관련 이슈: IMS 272941
-
-
SHMKEY+5(TSM) 권한이 IPCPERM 미적용 현상 수정
-
SHMKEY+5(TSM)이 항상 700으로 생성되고 IPCPERM이 적용되지 않는 현상을 수정하였다.
-
관련 이슈: IMS 279126
-
-
COUSIN 설정이 없는 노드에서 리모트 도메인 서비스 요청 시 TPENOREADY 오류 발생 현상 수정
-
Domain gateway의 COUSIN 환경에서 remote domain 종료 후 재기동 시 COUSIN으로 묶이지 않은 노드에서 remote domain의 서비스를 호출하면 TPENOREADY 오류가 발생하는 현상을 수정하였다.
-
관련 이슈: IMS 299306
-
-
CLHOPT -c 옵션 사용 시 메모리 누수 및 불필요한 서버 정보 전달 현상 수정
-
CLHOPT
-c
옵션 사용 시 부하가 없는 상태에서도 CLH 프로세스의 메모리가 지속적으로 증가하여 비정상 종료되는 현상을 수정하였다. -
또한, cousin에 속하지 않은 서버의 정보까지 전달되던 현상을 수정하여, 필요한 서버 정보만 전달되도록 개선하였다.
-
관련 이슈: IMS 291229
-
-
다수의 멀티 노드를 동시 기동 시 연결 끊김 및 duplicate 에러 현상 개선
-
다수의 멀티 노드를 동시에 기동할 경우 간헐적으로 연결이 끊기거나 duplicate 에러가 발생하던 현상을 개선하였다.
-
멀티 노드 환경에서는 각 노드가 동시에 다른 노드와 연결을 시도하면서, 연결 요청이 충돌하거나 타이밍이 맞지 않아 연결 실패나 오류가 발생할 수 있다.
노드 수가 많을수록 이러한 문제가 발생할 가능성이 높아지므로, 다음과 같은 기동 방식을 권장한다.
-
관리 노드에서
racd
를 이용한 통합 기동 -
노드를 수동으로 기동할 경우 각 노드 간 일정한 시간 간격을 두고 순차적으로 기동
-
-
관련 이슈: IMS 294570
-
-
Linux k2.6/k4.18 플랫폼에서 UCS, TCPGW, DOMGW, TMS 서버 다운 시 CLH 비정상 종료 현상 수정
-
Linux k2.6 및 k4.18 커널 기반 플랫폼에서 UCS, TCPGW, DOMGW, TMS 서버가 다운될 경우 CLH 프로세스가 비정상 종료되던 현상을 수정하였다.
-
관련 이슈: IMS 323891, 327765, 339452
-
-
Domain2에 IRT로 구성된 JEUS_ASYNC Gateway가 Domain1을 통해 진입할 경우 IRT가 적용되지 않는 현상 수정
-
구성: client(tpcall) → dom1(node1/2) (TMAXNONTX) → dom2(node3/4) (JEUS_ASYNC) → JEUS(1/2)
-
dom2의 node3에 구성된 JEUS_ASYNC Gateway가 다운되어 있는 경우 요청이 1:1로 성공/실패하는 문제가 발생하였다.
-
dom2에 IRT로 구성된 JEUS_ASYNC Gateway가 dom1을 통해 TMAXNONTX Gateway로 진입할 경우 IRT가 적용되지 않던 문제를 수정하였다.
-
관련 이슈: IMS 328821
-
-
CLH 및 서버 비정상 종료 후 재기동 시 TMM에서 SIGFPE가 발생하는 현상 수정
-
CLH 및 서버 프로세스가 비정상 종료된 후 재기동하는 과정에서 서버 프로세스가 CLH보다 먼저 TMM에 등록될 경우 SIGFPE가 발생하는 문제를 수정하였다.
-
관련 이슈: IMS 337778
-
-
tmdown 시 tmm의 공유 메모리(shm) detach 실패로 core가 발생하는 문제 수정
-
tmdown을 수행할 때 tmm 프로세스에서 공유 메모리(detach) 해제가 실패하면 core가 발생하던 문제를 수정하였다.
-
관련 이슈: IMS 342144
-
-
tmm에서 라이선스 경고 로그 발생 시 slog 파일이 생성되지 않는 현상 수정
-
tmm에서 Cloud 라이선스 기간 경고 로그(TMM3073, TMM3074)가 출력될 때, 새로운 날짜의 slog 파일이 생성되지 않는 문제를 수정하였다.
-
관련 이슈: IMS 344270
-
3.2. 클라이언트/서버
-
tmadmin API node config 출력 시 svg, svr 개수를 실제 서버 그룹 및 서버 개수로 수정
-
tmadmin API에서의 node config 정보 출력 시 svg, svr 개수가 실제 노드의 서버 그룹 개수, 서버 개수로 출력되도록 수정하였다.
-
관련 이슈: IMS 281571
-
-
JEUS_ASYNC GW 사용 시 tpalloc - tpforward를 호출하면 다른 채널로 데이터가 전달되는 현상 수정
-
tpacall → JEUS_ASYNC → IPPR(tpforward) → SVC(tpreturn) 호출 흐름에서 발생하는 문제를 개선하였다.
-
JEUS_ASYNC에서 요청 메시지가 도착하면 리모트 채널 정보를 헤더에 저장하고, 응답 시 해당 채널 정보를 읽어 메시지를 전송한다.
-
IPPR 서비스에서 tpalloc() 호출하면 새로운 헤더와 메시지가 생성되는데, tpforward() 호출 시 기존 헤더에 저장된 리모트 채널 정보가 새 헤더로 복사되지 않아, 이후 JEUS_ASYNC에서 응답이 다른 채널로 전송되는 문제가 있었다.
-
본 수정으로 이 문제를 해결하였다.
-
관련 이슈: IMS 267365
-
-
Tmax 5 SP2 Fix4 릴리즈 이후 libsvr을 이전 Tmax(tmm)에 적용 시 서버 비정상 종료 현상 수정
-
Tmax 5 SP2 Fix4 r11811 이후 버전의 libsvr을 해당 릴리즈 이전 버전의 Tmax(tmm)에 적용하여 기동할 경우 서버가 비정상 종료되는 현상을 수정하였다.
-
관련 이슈: IMS 268117
-
-
STD_MT 서버 타입 호출 시 행 현상 수정
-
STD_MT 서버 타입의 서비스 호출 후 CLH로부터 응답을 받을 때 seqno가 다르면 행이 걸리는 현상을 수정하였다.
-
관련 이슈: IMS 260033
-
-
멀티 노드에서 tpadvertise() 사용 시 리모트 노드 서버에서 기동 오류 발생 수정
-
r11820 패치 이후 멀티 노드에서 tpadvertise() 사용 시 리모트 노드 서버에서 기동 오류 발생 현상을 수정하였다.
-
관련 이슈: IMS 274905
-
-
STD_MT 서버 타입에서 CDATE 매크로 사용 시 로그 파일 날짜 갱신 누락 현상 수정
-
STD_MT 서버 타입에서 CDATE 매크로를 사용한 경우 날짜가 변경된 이후에도 새로운 로그 파일이 생성되지 않고 이전 날짜의 로그 파일에 계속 기록되는 현상을 수정하였다.
-
관련 이슈: IMS 280404
-
-
tmdown -R 사용 시 특정 서버가 종료되지 않는 현상 수정
-
tmdown -R
명령 사용 시tpacall()
-tpgetrply()
패턴을 사용하는 서버가 간헐적으로 종료되지 않고 Hang 상태에 빠지는 현상을 수정하였다. -
관련 이슈: IMS 305133
-
-
multi-clh 환경에서 tpgetcliinfo() 사용 시 TPEINVAL 발생 현상 수정
-
FD 32768 패치(r11840) 적용 과정에서
clid
포맷이 변경되었으며, 이로 인해 변경된 포맷을 사용하는libsvr
와 기존 포맷을 사용하는 Tmax 시스템 간 충돌이 발생하여tpgetcliinfo()
호출 시TPEINVAL
오류가 발생하였다. -
FD_SETSIZE
값에 따라clid
,spri
포맷이 유동적으로 설정되도록 수정하여 해당 오류를 방지하였다. -
관련 이슈: IMS 308336
-
-
JEUS_ASYNC Gateway에서 요청할 때 UCS의
tprelay()
이후 응답을 받지 못하는 문제 수정-
구성:
tpacall
→ JEUS_ASYNC → IPPR(tpforward
) → A(tpforward
) → UCS(tprelay
) → B(tpreturn
) -
JEUS_ASYNC Gateway는 요청 시 사용한 채널 정보를 헤더에 저장한다. 그런데 UCS에서
tprelay()
를 호출하면서 헤더 메시지를 다시 만들 때, 이 채널 정보를 업데이트하지 않아 문제가 발생했다. -
그 결과 UCS에서 응답이 와도 JEUS_ASYNC Gateway가 어떤 채널로 요청했는지 알 수 없어, 잘못된 채널로 응답을 보내는 문제가 생겼다.
-
이 문제를 해결하기 위해
tprelay()
호출 시 요청 채널 정보를 함께 업데이트하도록 수정하였다. 이제 JEUS_ASYNC Gateway가 정확한 채널로 응답을 받을 수 있다. -
관련 이슈: IMS 342332
-
-
tmdown -S 처리 중 서버 프로세스에서 tmadmin API 수행 시 서버가 종료되지 않는 현상 수정
-
tmdown -S 처리 중 일부 서버 프로세스에서 tmadmin(TMADM_SVC_STAT)을 요청하는 과정에서 타이밍 이슈로 인해 tmdown 요청이 먼저 도착하면서 tmadmin(TMADM_SVC_STAT)에서는 예상하지 못한 msgtype을 수신하게 되었다. 이로 인해 TPESYSTEM 에러가 발생하고, 이후 tmadmin API의 응답 메시지가 서버 프로세스로 전달되며 (E) SVR0209 internal error: invalid msg type 1124 [SVR0034] 에러 로그가 출력되었다. 해당 서버 프로세스는 종료되지 않은 채로 남아 있는 문제가 있었다.
-
서비스 처리 중 요청한 메시지 타입과 다른 메시지 타입을 수신한 경우에도 정상적으로 처리하여 문제가 발생하지 않도록 수정하였다.
-
관련 이슈: IMS 318730
-
-
STD_MT 타입 서버 재기동을 반복 실행 시 SVR3012 오류 발생 현상 수정
-
STD_MT 타입 서버를 반복해서 재기동할 경우 SVR3012 오류가 발생하는 현상을 수정하였다.
-
관련 이슈: IMS 333991
-
3.3. 관리도구
-
STD_MT 서버 타입 st -s/-p avg 값 출력 오류 수정
-
STD_MT 서버 타입의 서비스 호출 시 st -s/-p의 avg 값이 비정상적으로 출력되는 현상을 수정하였다.
-
관련 이슈: IMS 260033
-
-
CLH 2개 이상일 경우 ci -P 출력 오류 수정
-
CLH가 2개 이상일 때 전체 CLH 중 비어 있는 슬롯이 존재하는 경우 tmadmin ci -P 명령 실행 시 qpcount, emcount, ippaddr의 port 및 tmax_port가 잘못 출력되는 현상을 수정하였다.
-
관련 이슈: IMS 270291
-
-
cfg -n 명령어 실행 시 MAXRQCPC 항목 누락 문제 수정
-
tmadmin의 cfg -n 명령어 실행 시 누락되었던 maxrqcpc 값이 정상적으로 출력되도록 수정하였다.
-
관련 이슈: IMS 288064
-
-
reopen_db 명령어에 잘못된 서버 그룹명 입력 시 문제 수정
-
존재하지 않는 서버 그룹명 입력 시 tmadmin 비정상 종료 현상을 수정하였다.
-
non-xa 서버 그룹명 입력 시 관련 없는 에러 메시지 출력 현상을 수정하였다.
-
tmadmin help에 누락된 명령어 reopen_db, notify_reconnect_clh, admnoti를 추가하였다.
-
관련 이슈: IMS 280635
-
-
stat 명령어 Usage 메시지 및 에러 처리 개선
-
stat 명령어의 Usage 메시지에 누락된 옵션과 수정 사항을 반영하였다.
-
-pod, -j 옵션을 추가하였다.
-
출력 포맷([], {}, |)이 일관되도록 수정하였다.
-
-
-a, -h와 같은 존재하지 않는 옵션 입력 시 Usage 메시지가 출력되도록 수정하였다.
-
-s 옵션 및 -p 옵션의 정렬 관련 오류 처리를 수정하였다.
-
관련 이슈: IMS 290421
-
-
cfgadd 동적 서비스 등록 시 ADM0211 에러 발생 현상 수정
-
cfgadd 명령어로 서비스를 동적으로 등록할 경우 (W) ADM0211 General Information : invalid cfgfile in SERVICE, KAQM1024 is omitted [ADM0434] 에러가 발생하는 문제가 있었다. 이는 등록된 서비스 수가 많은 경우 서비스 인덱스 값이 꼬이면서 발생하였다.
-
위와 같은 상황에서도 에러가 발생하지 않도록 수정하였다.
-
관련 이슈: IMS 312610
-
-
HP-UX에서 st -t로 tms 정보 조회 시 비정상 종료 현상 수정
-
HP-UX 환경에서 MAXGW가 홀수 개로 설정되어 있고 GW가 존재하는 경우 st -t 명령어로 tms 정보를 조회할 때 비정상 종료되는 문제를 수정하였다.
-
관련 이슈: IMS 314055
-
-
rbs (-S/-s) 명령 이후 서비스 요청에 대한 오류 케이스 발생 현상 수정
-
POD 서버(MIN=0)를 rbs -S로 재부팅한 후 서비스를 요청할 경우 서비스가 처리되지 않고 서버가 무한 재기동되는 문제를 수정하였다.
-
MIN >= 1로 설정된 TCS 서버에서 서비스 처리 중 rbs -S로 바이너리를 교체하면, 새로 기동된 서버 프로세스로만 스케줄링되는 문제를 수정하였다.
-
sp/rs -s SVC로 서비스를 suspend/resume할 경우 서비스 요청에 대해 스케줄링되지 않는 문제를 수정하였다.
-
서비스 처리 중인 POD 서버에 rbs 요청 시 기존 서비스는 정상 처리되나 이후 서비스 요청이 처리되지 않고 큐잉되는 문제를 수정하였다.
-
rbs 수행 중 LIFESPAN 옵션에 의해 서버가 종료될 경우 MIN 수만큼 서버가 재기동되지 않는 문제를 수정하였다.
-
관련 이슈: IMS 341369
-
3.4. 유틸리티
-
서버절 CPC=0 설정 시 CFL 에러 메시지의 최소값 오기 수정
-
서버절에
CPC=0
으로 설정한 경우 CFL 실행 시 출력되는 에러 메시지에 valid range의 최소값이 0으로 잘못 표시되던 문제를 수정하여 1로 정확하게 출력되도록 하였다. -
관련 이슈: IMS 288067
-
-
svcrpt 실행 시 서비스 개수가 1024를 초과할 경우 비정상 종료 현상 수정
-
r11823 이후
svcrpt
실행 시 등록된 서비스 개수가 1024를 초과할 경우 비정상 종료되는 현상을 수정하였다. -
참고: r11823에서는
svcrpt
의 초/분 단위 출력 기능 추가 및 시간별 출력 형식이 변경되었다. -
관련 이슈: IMS 306722
-
-
mksvr을 이용한 동적 서버 빌드시
-t STD_MT
옵션 사용 시 라이브러리를 찾지 못하는 오류 수정-
mksvr을 이용하여 동적 서버를 빌드할 때
-t STD_MT
옵션을 사용하는 경우 컴파일 시 라이브러리를 찾지 못하는 오류를 수정하였다. -
관련 이슈: IMS 339556
-
-
fdlc 사용 시
-h
옵션을 지정해도_fdl
이 포함되는 현상 수정-
5.0.2.4.r11405 버전 이후
fdlc
사용 시-h
옵션을 지정하면_fdl
이 포함되지 않고, 지정한 파일명으로 헤더 파일이 생성되도록 수정하였다. -
참고: r11405에서는
-k
옵션이 추가되어,-h
옵션으로 지정한 Java 파일 이름 그대로 클래스 또는 인터페이스 이름이 생성되도록 기능이 개선되었다. -
관련 이슈: IMS 341900
-
-
TS*KILLTIMEOUT 재정의 시 미적용 현상 수정
-
DEFAULT 절에 TS*KILLTIMEOUT 옵션을 설정한 후 하위 각 서버 설정에서 TS*KILLTIMEOUT을 0으로 재정의할 경우에도 비활성화되지 않고 DEFAULT 절에 설정된 값으로 TIMEOUT이 적용되는 현상을 수정하였다.
-
관련 이슈: IMS 337491
-
-
TIP 서버 프로세스에 TS*KILLTIMEOUT Timeout 에러 발생 현상 수정
-
tpsvrinit(), tpsvrdone()이 없는 서버 프로세스(TIP)에도 TS*KILLTIMEOUT의 타임아웃이 적용되는 현상을 수정하였다.
-
관련 이슈: IMS 337491
-
3.5. TDL
-
tdlupdate/tdlshm Usage에 일부 옵션 누락된 문제 수정
-
tdlupdate
명령어의 Usage 출력에서 누락되었던-e
,-N
,-h
,-l file
,-r tdldir
옵션을 추가하였다. -
tdlshm
명령어의 Usage 출력에서 누락되었던-V
,-b
,-B bakfile
,-a
옵션을 추가하였다. -
관련 이슈: IMS 343608
-
-
tdlclean help 내용 오류 및 -m/-M 옵션 설명 정정
-
tdlclean의 Usage 옵션 중 [-m module|-M library]로 잘못 표기된 내용을 [-m library|-M function]으로 수정하였다.
-
모든 tdl 유틸리티의 -m/-M 옵션 설명을 일관되게 반영하였다.
-
-m: 라이브러리명 (library)
-
-M: 함수명 (function)
-
-
관련 이슈: IMS 336543
-
3.6. TCP 게이트웨이
-
put_msg_info()에서 수정된 uid 값이 자료 구조를 나누는 uid max 값(2,097,152) 보다 클 경우 core 발생 수정
-
put_msg_info()에서 수정된 uid값이 자료 구조를 나누는 uid max 값(2,097,152) 보다 클 경우 TCPGW0057 에러가 발생하도록 수정하였다.
(E) SVR6226 UID(50002) range is exceeded in put_msg_info, Valid range = (MAX : 50001) [TCPGW0057] (E) SVR6226 UID(2097153) range is exceeded in put_msg_info, Valid range = (MAX : 2097152) [TCPGW0057]
-
관련 이슈: IMS 280893
-
3.7. Java 게이트웨이
-
JEUS GW 사용 시 응답 수신 과정에서 비정상 종료되는 현상 수정
-
JEUS GW로 들어온 XA Inbound 요청의 XID Seqno가 음수일 경우 GW가 비정상 종료되는 현상을 수정하였다.
-
관련 이슈: IMS 287383
-
3.8. HostLink
-
기동 직후 cimsgw 최초 호출 시 오류 현상 수정
-
기동 직후 cimsgw 서비스를 최초 호출할 때 잘못된 응답 메시지가 전달되어 오류가 발생하고, 이후 동일 호출 시에는 정상 동작하는 현상을 수정하였다.
-
관련 이슈: IMS 278406
-
3.9. 기타
-
tmadmin.h의 tmadm_svc_conf_body 주석 오기 수정
-
tmadmin.h 헤더 파일 내
tmadm_svc_conf_body
구조체의 주석이TMADM_SVC_CONF
가 아닌TMADM_SVR_CONF
로 잘못 표기되어 있던 문제를 수정하였다. -
관련 이슈: IMS 283325
-