Tmax 5 SP2
본 장에서는 Tmax 5 SP2에 신규 기능과 추가된 기능 그리고 변경된 기능에 대해 간략히 설명한다. 상세한 설명은 관련 안내서를 참고한다.
1. 신규 기능
본절에서는 새롭게 추가된 신규 기능에 대해 설명한다.
1.1. Multiple RM
XA 서버의 경우 한 서버 그룹 안의 서버들은 서버 그룹에 설정한 동일한 하나의 RM만이 접근 가능하여 트랜잭션을 처리하는 것이 Tmax의 기본 정책이다. 하지만 불가피하게 한 프로세스에서 2개 이상의 RM을 이용할 경우 하나의 트랜잭션으로 처리하는 것이 불가능했다. 한 프로세스에서 2개 이상의 RM 혹은 같은 RM이지만 2개 이상의 인스턴스를 사용하는 트랜잭션을 한 트랜잭션으로 포함할 수 있도록 하기 위해서 서버 라이브러리의 기능을 확장했다.
이러한 MultipleRM을 지원하기 위해서 기존의 TCS, UCS 서버 라이브러리를 이용하므로 기능을 그대로 사용할 수 있다.
1.2. Multithread/Multicontext 기능 추가
클라이언트와 서버 프로그램에서 Multithread와 Multicontext 기법을 사용하여 하나의 클라이언트에서 동시에 여러 개의 서비스를 요청하거나 동시에 여러 Tmax 시스템과 통신하는 것도 가능하다. 또한 하나의 서버 프로세스에서 여러 스레드가 서비스 요청을 동시에 처리하거나 2개 이상의 스레드가 하나의 context를 공유하면서 서비스를 처리할 수도 있는 기능이 추가 되었다.
자세한 내용은 Tmax Application Development Guide의 Multithread와 Multicontext를 참고한다. |
1.3. IPv6
Tmax에서는 설정을 통해 IPv6를 지원한다. 설정하지 않으면 IPv4로 동작을 수행한다. 설정은 필요에 따라서 환경변수, Tmax 환경설정 파일에 적용해야 한다. 클라이언트와 같은 경우에는 환경설정 파일을 이용할 수 없기 때문에, 환경변수에 설정을 해야 한다.
Tmax는 클라이언트, 멀티 노드, 멀티 도메인, TCP 게이트웨이 등이 모두 소켓을 사용하여 구현했다. 각각 의 구성들은 모두 IPv4를 사용할지 또는 IPv6를 사용할지를 결정할 수 있도록 지원한다.
-
소켓의 개념에 따라 크게 연결 수락 부분과 연결 요청 부분으로 구분할 수 있다. 이 분류에 따라 각각의 모듈들의 IPv6 지원 여부를 설정한다.
-
IPv6를 지원하겠다고 설정하면, Tmax는 해당하는 소켓을 IPv6 용으로 생성한다. 이때 Tmax가 설치된 플랫폼이 Dual stack과 같은 전환 기술을 제공하면 Tmax는 IPv4/IPv6 연결 요청을 모두 수신할 수 있다.
그러나 Tmax에서 IPv6를 설정하지 않았다면, 플랫폼에서 IPv6/IPv4를 모두 지원하더라도 Tmax는 IPv4 연결만 수신할 수 있으며 IPv6 요청은 수락할 수 없다.
-
IPv6 관련 환경변수
-
TMAX_HOST_IPV6
-
TMAX_BACKUP_IPV6
-
TMAX_RAC_IPV6
-
TMAX_WEBADM_ IPV6
-
java.net.preferIPv4Stack
-
java.net.preferIPv6Addresses
-
TMAX_IPV6_LINK_IF
-
-
IPv6 관련 환경설정 파일
-
CLIENT_IPV6
-
EXTSVR_IPV6
-
SYSTEM_IPV6
-
CLOPT="-X SERVER_ IPV6" CLOPT="-X CLIENT_ IPV6"
-
CLOPT="-f 설정파일"
-
LOCAL_IPV6
-
RGW_ IPV6
-
RGW_B1_ IPV6
-
RGW_B2_ IPV6
-
RGW_B3_ IPV6
-
1.4. tmapm 모듈
TMAPM은 시그널 알람 사용하지 않거나, 용이하지 않은 경우 service timeout 시간이 지난 서비스를 종료시켜주는 모듈이다. 자세한 사용법은 Tmax Reference Guide를 참고한다.
*SERVER tmapm CLOPT = [ -i sec ] [-r sec ] [-c command ] [-l [0 | 1 | 2 ] ]
2. 추가 기능
본 절에서는 추가된 주요 기능에 대해 설명한다.
2.1. ENGINE
-
TMM, CLH 연결이 종료된 서버의 행동 방식 정의 기능 추가
-
TMM이 종료되었을 때 경우에 따라 서버를 종료시킬 필요가 있거나, 서버가 CLH와 연결이 끊어졌을 경우 cpc 연결을 다시 해야 하는 경우가 있다. SERVER 절에 MAC, ROC 항목을 추가하여 해당 여부를 설정할 수 있는 기능을 추가하였다.
-
MAC = Y | N
-
기본값 : N
-
MAC(Master Alive Check)는 TMM이 종료되었을 때, 좀비 프로세스로 남는 것을 방지하기 위해 경우에 따라서 서버를 종료시킬 필요가 있다.
-
MAC=Y로 설정할 경우, TMM이 비정상 종료하면 서버도 종료한다.
-
-
ROC = Y | N
-
기본값 : N
-
ROC(Reconncet Outbound CPC)는 서버가 CLH와 연결이 끊어졌을 경우 cpc 연결을 다시 해야 할 경우가 발생한다.
-
ROC=Y로 설정할 경우, CLH는 살아 있고 소켓의 연결이 끊겼을 경우 재연결을 시도한다.
-
-
-
CLL 커넥션 부하 분산 기능 추가
-
기존 CLL이 CLH로 클라이언트 커넥션을 넘기는 방식은 RR(Round Robin) 방식이기 때문에 각 CLH마다 클라이언트 수가 균형있게 유지되지 않을 수 있다. Tmax 5 SP2에서는 CLL에서 공유 메모리(shared memory)의 정보를 확인하고 가장 적은 커넥션을 가진 CLH에게 보내는 방식으로 기능을 추가했다.
-
CLLCONNLB = RR | LC
-
기본값 : RR
-
CLL이 CLH로 클라이언트 커넥션을 넘기는 방식을 설정한다.
-
CLLCONNLB = LC로 설정하면 Lease Connection 방식으로 CLL이 가장 적은 커넥션을 가진 CLH에 다음 커넥션을 맺는다.
-
CLLCONNLB를 지정하지 않거나 그 외의 값을 대입하면 기본값인 RR 방식으로 다음 커넥션을 맺는다.
-
-
-
FDL_VERSION 2 기능 추가
-
FDL stringype의 필드값 입력, 업데이트, 삭제를 수행할 때 strlen()을 통해 매번 길이를 구해야 했으나 입력할 경우에만 길이를 구하고 버퍼에 저장하도록 기능을 개선하였다.
-
기존의 Tmax 버전과 호환되지 않고 Tmax 5 SP2에서만 사용 가능하다. FDL_VERSION이 일치하지 않으면 FBESETVER 에러를 반환한다.
-
fballoc() 또는 tpalloc()으로 메모리에 할당된 fbuf의 string type의 형식이 변경되었다.
KEY | DATA(STRING) -> KEY | SIZE | DATA(STRING)
-
사용법
*DOMAIN FDL_VERSION = 2 클라이언트 설정 - 환경변수 export FDL_VERSION=2 또는 tmax.env에 FDL_VERSION=2 지정 후 tmaxreadenv() 호출
-
-
서버 자동 종료 기능 추가
-
CLOPT에 -m 옵션으로 유저 서버 프로그램의 메모리 사용량이 옵션에 기술된 크기보다 더 많이 사용되면 서버 프로그램을 종료하고 재시작하는 기능을 추가했다.
-
CLOPT 설정
CLOPT = "-m XXXX"
XXXX는 Btye 단위로, XXXX Byte 사용을 확인할 경우 서버를 정상 종료한 후 재시작한다.
MAX_USE_COUNT 옵션을 Server Configuration에 추가한 경우 해당 서버의 서비스 호출 횟수가 MAX_USE_COUNT 보다 크면 서버 프로그램 종료한다.
다음과 같이 설정한 경우 5회 서비스 호출 시 서버를 정상 종료 후 재시작한다.
MAX_USE_COUNT = 5
-
-
환경설정 제외 서비스 부팅 방식 수정
-
환경설정 파일에 없는 서비스를 등록할 경우 있는 서비스만 등록하고 정상 부팅되도록 동작 방식을 개선하였다.
-
-
서버 부팅 권한 개선
-
tmboot -a 옵션을 통해 서버 부트를 TMM에 위임하는 기능 추가하였다.
-
-
timeout 재기동할 때 restart count 초기화 기능 개선
-
-r 옵션 적용된 서버에서 timeout으로 재기동할 때 GPERIOD 지나도 restart count 초기화되지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 62481
-
-
CLLBLOCK 자동 해제 기능 추가
-
Tmax 서비스가 완전히 기동되지 않은 상태에서 서비스가 호출되는 것을 방지하기 위해 Tmax 서비스가 완전히 기동된 후 CLLBLOCK을 해제시키는 기능이 추가되었다.
-
DOMAIN 절 설정
*DOMAIN DomainName CLLBLOCK = Y
-
기본값 : N
-
-
-
CLH 에 매크로 설정 기능 추가
-
CLH 에 -o -e 옵션에 $(CDATE) $(PID) 적용이 가능하도록 기능을 추가하였다.
-
관련 이슈 : IMS 51608
-
-
멀티 CLH 구조의 동시 스케줄링 문제해결을 위한 기능 추가
환경설정 NODE 절의 MINCLH 값이 2이상인 환경에서는 서비스 요청을 처리할 때 각 CLH마다 독립적으로 각 서버 프로세스에 대한 스케줄링 상태를 관리하고 있다.
예를 들어 "MINCLH = 2", 서버의 "MINSVR = 1"인 환경에서 CLH 1번, 2번은 스케줄링할 수 있는 서버 프로세스가 1개이다. 만약 각각의 CLH로 해당 서비스 요청이 들어오면 각 CLH는 다른 CLH가 해당 서버 프로세스에 스케줄링했는지 여부를 검사하지 않고 자신의 관점에서 RDY이면 스케줄링을 하게 된다. 이렇게 되면 특정 시점에는 한 서버 프로세스로 여러 CLH가 동시에 서비스를 스케줄링하는 상황이 발생할 수 있으며, 이때 해당 서버 프로세스는 가장 먼저 요청된 CLH로부터의 요청을 처리한다. 나머지 CLH들의 요청은 해당 서버 프로세스에서 처리하지 못하고 소켓 버퍼 내부에 쌓여 있게 된다.
즉, tmadmin에서 st -p로 스케줄링 상태를 조회하면 같은 spri를 가지는 프로세스에 대해서 각 CLH에서는 모두 RUN으로 보이지만, 실제로는 해당 시점에 어떤 CLH의 요청 하나만 처리되고 있고, 나머지는 대기 상태가 된다. 이 경우, 대기 상태의 요청들은 CLHQTIME의 적용도 받지 않고 MIN/MAX 설정이 다른 서버의 경우 ASQCOUNT에 의해 즉시 기동되지도 않는 상태가 된다.
Tmax 5 SP2에서는 MULTICLH=N 설정을 추가하여 멀티 CLH 구조의 동시 스케줄링 문제를 해결하였다.
-
MULTICLH = Y | N
-
기본값 : Y
-
기본값으로 설정하면 MINCLH가 2 이상인 환경에서 한 서버 프로세스가 여러 CLH로우부터 서비스 요청을 동시에 받을 수 있다. 서버 프로세스는 서비스 요청을 동시에 받으면 먼저 들어온 서비스 요청을 처리하고, 해당 서비스가 tpreturn으로 끝났을 때 다른 CLH의 서비스 요청을 처리하게 된다.
-
설정값을 'N’으로 설정하면 각각의 서버 프로세스는 하나의 CLH로부터만 서비스 요청을 받아서 처리하게 된다. 따라서 여러 CLH로부터 한 서버 프로세스로 동시에 서비스 요청을 하는 것을 방지할 수 있다. 반면에 각 서버 프로세스는 하나의 CLH로부터만 서비스를 요청받기 때문에, 다른 CLH에서 부하가 발생하더라도 이와 상관없이 자신에게 할당된 CLH의 요청만 처리하게 되어 성능적인 측면에서 비효율적인 상황이 발생할 수 있다.
-
설정값을 N으로 설정할 경우 주의사항
-
서버의 MIN 값을 설정할 경우 반드시 MINCLH 이상의 값을 설정해야 한다.
-
서버의 MAX 값을 설정할 경우 반드시 MAXCLH 이상의 값을 설정해야 한다. MAX 설정값은 MAXCLH 설정값의 배수일 필요는 없다.
-
각 서버 프로세스는 자신이 담당할 CLH를 서버 프로세스 번호(spri)의 값이 낮은 순서부터 차례대로 순서에 따라 CLH 번호에 할당된다. 즉, 첫 번째 서버 프로세스는 첫 번째 CLH를 담당하고, 두 번째 서버 프로세스는 두 번째 CLH, 서버 프로세스 순서가 MAXCLH를 초과하는 경우에는 다시 첫 번째 CLH부터 순서대로 담당하게 된다.
만약 MINCLH와 MAXCLH의 설정값이 다르고, CLH가 MAXCLH까지 기동되지 않았다면 기동되지 않은 CLH를 담당하는 서버 프로세스들은 어떤 서비스 요청도 받지 못하게 된다. 따라서 tmboot나 TMM에 의해 서버 프로세스가 기동될 때 미기동된 CLH를 담당하는 spri를 가진 서버 프로세스들은 기동되지 않으며, CLH가 기동해야 해당 CLH를 담당하는 spri의 서버 프로세스들도 기동할 수 있다.
-
MINCLH와 MAXCLH의 설정값이 다른 환경에서 CLH를 추가로 기동시킨 경우에는 해당 CLH를 담당하는 서버 프로세스들은 기동되지 않은 상태이기 때문에 즉시 tmboot로 추가 기동시켜야 한다. 그렇지 않으면 해당 CLH로 접속된 클라이언트에서 서비스를 요청하면 TPENOREADY 에러를 리턴받게 된다.
-
MULTICLH 옵션이 기본값으로 설정된 서버를 'N’으로 변경할 때는 MIN, MAX 설정값을 조정할 필요가 있는지 검토해야 한다. MIN, MAX 설정값을 변경하지 않고 MULTICLH를 'N’으로 설정하면 기존보다 각 CLH가 스케줄링할 수 있는 서버 프로세스 수가 줄어들기 때문에 특정 CLH에 부하가 발생하는 경우에 요청이 큐에 쌓일 수 있다.
-
-
-
관련 이슈 : IMS 54138
-
-
tmm domain-socket listent 시 backlog 값을 설정할 수 있는 옵션 추가
Tmax 프로세스 재기동 또는 추가 기동 시 리소스 부족으로 인해 기동하지 못하는 현상이 있었다.
해당 현상의 원인은 같은 노드의 프로세스들이 TMM에 도메인-소켓으로 연결할 수 있도록 listen()을 하는데, HP 버전의 Tmax의 경우 backlog 값이 127로 설정되어 있었다. 이와 같은 상황에서 다수의 프로세스가 타임아웃으로 재기동하는 경우에 재기동 이후 서버 프로세스에서 TMM에 연결하려다가 실패하고 connection refused가 발생하여 일부 서버가 기동할 수 없었다.
backlog 값을 HP의 경우 기본으로 1023으로 설정하도록 개선하였고 추가적인 기능을 보강하였다.
-
TMMOPT = literal
-
크기 : 255자 이내
-
TMM이 기동될 때 TMM 프로세스로 전달되는 명령어 옵션을 정의한다. 정의된 옵션 중에 '--' 이전에 지정된 옵션들은 시스템에서 사용하고, 그 이후에 지정된 옵션들은 사용자가 자유롭게 사용할 수 있다.
옵션 설명 -t 초
ASQCOUNT로 기동된 서버 프로세스의 접속 타임아웃 시간을 변경할 수 있도록 하는 옵션이다. 운영 중에 tmadmin의 setopt 명령을 통해 동적으로 변경할 수 있다. (기본값: 10초, 단위: 초)
ex) TMMOPT = "-t 20"
-B backlog 값
서버 프로세스의 접속을 처리하는 listen port의 backlog 값을 지정한다.
설정할 수 있는 값은 1부터 SOMAXCONN 값이다. (기본값: 1023)
너무 작은 값을 설정하면 다수의 서버 프로세스가 동시에 TMM에 접속할 때 연결이 실패할 수 있다.
-A 처리 횟수
서버 프로세스의 접속요청에 대해서 accept를 처리할 때 한 번에 몇 개씩 처리할 것인지 지정한다. 운영 중에 tmadmin의 setopt 명령을 통해 동적으로 변경할 수 있다. (기본값: 100)
-F 동시 처리 최대 개수
TMM에서 서버 프로세스의 추가 기동이나 프로세스 재기동 등으로 인해 새로운 프로세스를 생성할 때 동시에 처리할 수 있는 최대 개수를 지정한다. 시스템의 성능이나 부하 상태에 따라 새로운 프로세스의 기동에 영향을 주는 경우에 이 옵션을 통해 조정할 수 있다.
설정할 수 있는 범위는 0부터 현재 설정된 backlog 값까지이다. (기본값: backlog 설정값의 0.75배)
0으로 설정하면 제한 없이 새로운 프로세스를 즉시 기동시키게 된다. 운영 중에 tmadmin의 setopt 명령을 통해 동적으로 변경 할 수 있으며, 0으로 변경하면 변경 시점에 아직 기동하지 못하고 대기 중이던 프로세스들을 모두 기동시킨다.
프로세스 기동 개수는 다음과 같은 동작으로 계산된다. 기동 요청으로 프로세스를 생성할 때 현재 기동중인 프로세스 개수를 1 증가시킨다. 기동된 프로세스가 TMM에 접속한 다음에 Registered 될 때 1 감소시킨다. 만약 기동된 프로세스에서 exec()가 실패하거나 Registered되기 전에 실패하는 경우에는 -t 옵션에 정의된 boottime 을 확인해서 1 감소시킨다. 만약 특정 프로세스가 실행 파일이 없거나 dependent library 오류 등으로 정상 기동을 못하게 될 경우 boottime 동안 기동 개수를 유지함을 주의한다.
만약 현재 기동 중인 프로세스 개수가 -F 옵션 설정값에 도달한 상태에서 추가적인 기동 요청이 발생하면, 해당 기동 요청은 현재 기동 중인 프로세스가 Register를 완료해서 여유가 생길 때까지 대기한다.
-
-
tmadmin을 통한 운영 중 변경 기능 추가
위의 옵션들을 운영 중에 변경할 수 있는 기능을 추가하였다. TMMOPT의 옵션은 cfg로 조회할 수 없고 set으로 변경할 수 없다. 따라서 TMMOPT를 조회하고 변경할 수 있는 cfgopt, setopt 명령을 추가했다. 변경할 수 있는 옵션은 -A, -F, -t 옵션이다.
-
조회
cfgopt -tmm
-
수정
setopt -tmm -F 100
-
-
관련 이슈 : IMS 65507
-
-
Tmax Cousin SVG들의 Backup 구성 기능 추가 (LOAD = -3)
-
기존에는 LOAD 값은 1이상, 0, -1, -2 만 존재하였으나 Tmax Cousin SVG들의 Backup 구성 기능을 위해 -3의 LOAD 값이 추가되었다.
SVRGROUP 절의 BACKUP 항목은 COUSIN으로 설정한 서버 그룹들에 대한 백업 설정이 아니라, 설정된 서버 그룹에 대한 백업 설정이다. 예를 들어 서버 그룹 A COUSIN="B,C", BACKUP="D"로 구성되어 있는 경우 A, B, C가 속한 노드가 모두 종료된 경우에 D로 스케줄링하는 것이 아니라 A가 속한 노드가 비정상일 경우 A 스케줄링 차례에서만 D로 스케줄링한다. A, B, C에 속한 서버가 모두 비활성화되어 있을 경우 D로 가기 위한 새로운 스케줄링(LOAD)을 추가했다.
A COUSIN="B,C,D", LOAD=-2 B LOAD=-2 C LOAD=-2 D LOAD=-3
위와 같이 설정된 경우 평소에는 A, B, C로만 스케줄링을 시도하고 A, B, C 모두 문제가 있을 경우에는 D로 스케줄링한다. 즉, 평소에는 -3이 아닌 LOAD를 가진 서버 그룹만을 사용하여 스케줄링하고, 모두 문제가 있을 경우에는 -3을 가진 서버 그룹으로만 스케줄링한다. 이때 스케줄링은 -2와 같은 로컬 우선 부하 분산을 따른다.
-
관련 이슈 : IMS 45359
-
2.2. TDL
VERSION 4는 C++에서 사용하는 namespace와 라이브러리를 사용할 수 있는 인터페이스를 제공한다.
-
tdlcreate
TDL Class Factory를 사용하여 클래스 인스턴스를 생성하는 함수이다.
int tdlcreate(char *libname, char *namespace, char *classname, void *args, void **object, long *urcode, int flags);
-
tdldestroy
TDL 동적 모듈에서 Class Factory를 사용하여 클래스 인스턴스를 파괴하는 함수이다.
int tdldestroy(char *libname, char *namespcae, char *classname, void *args, void *object, long *urcode, int flags);
2.3. WebT
-
JTmax에서 EJB 3.0 기능을 지원한다.
-
특정 서버 그룹에 속하는 서비스를 호출하기 위한 tpgetsprlist, tpspracall 함수가 추가되었다. WebT 헤더 설정이 extendedV4이어야 사용가능하다. 자세한 사용법은 Tmax WebT User Guide를 참고한다.
-
tpgetsprlist
public int tpgetsprlist(String svcName, int svgno, int[] index, WebtAttribute attribute)
-
tpspracall
public int tpspracall(int spri, WebtBuffer txBuffer, WebtAttribute attribute)
또는
public int tpspracall(String svcName, int spri, WebtBuffer txBuffer, WebtAttribute attribute)
-
2.4. Tmax RPC(Remote Procedure Call) 기능
Tmax RPC는 3가지 타입의 서비스 제공한다.
-
Data Access Server(이하 DA 서버)
DA 서버는 하나의 SQL 쿼리로 이루어진 업무에 사용하며 인터페이스는 SQL을 통해서 정의한다.
-
TP 서버
TP 서버는 하나의 SQL 쿼리를 통해서는 이루어질 수 없으며, 트랜잭션을 사용해서 여러 개의 RPC가 같이 처리되어야 하는 업무에 사용한다.
-
FS 서버(Function Server)
FS 서버는 SQL과 상관없는 사용자 정의 함수를 호출하기 위해 사용한다. 예를 들어 클라이언트 가 요청한 파일을 읽어주는 것과 같은 업무를 수행할 수 있다.
2.5. HMS
-
HMS의 병목 구간인 스토리지 작업에 대한 일괄처리 기능 추가
스토리지 작업은 Persistent 메시지를 전송하거나 Ack 처리 시에 발생한다. 일괄처리 스레드는 같은 Destination으로 향하는 여러 개의 Persistent 메시지를 일괄적으로 처리함으로써 DB commit 횟수를 줄이는 역할을 수행한다.
이를 위해서 SVRGROUP 절에 다음 항목을 추가하였다.
-
HMSMAXBULKTHR = numeric
-
범위 : 1 ~ 65535
-
HMS 메시지에 대한 스토리지 처리를 일괄적으로 하는 스레드의 수를 설정한다.
-
-
HMSMAXBULKSIZE = numeric
-
범위 : 2 ~ 65535
-
HMS 메시지에 대한 스토리지 일괄처리를 할 때 한 번에 처리할 수 있는 메시지의 최대 개수를 설정한다.
-
-
-
HMSOPT 추가
-
화면출력 내용 파일 리다이렉션 기능 추가하였다. 설정 방법은 TMMOPT, CLHOPT와 동일하다.
-
HMSOPT = literal
-
크기 : 255자 이내
-
HMS가 기동될 때 HMS 프로세스로 전달되는 명령어 옵션들을 정의한다.
옵션 설명 -e 파일명
HMS 동작 중에 발생하는 표준 에러(standard error)를 파일에 기록한다.
-o 파일명
HMS 동작 중에 발생하는 표준 출력(standard output)을 파일에 기록한다.
-
-
2.6. 도메인 게이트웨이
-
게이트웨이별 옵션 별도 적용 기능 추가
-
기존 DOMAIN 절에서만 제공되었던 NLIVEINQ, GWCHKINT, GWCONNEC_TIMEOUT 항목을 각 게이트웨이별로 적용할 수 있도록 기능 추가하였다.
-
적용한 게이트웨이
-
TMAX
-
TMAXNONTX
-
JEUS
-
JEUS_ASYNC
-
TUXEDO
-
TUXEDO_ASYNC
-
-
동작할 수 있는 게이트웨이별 설정
|| gateway type || NLIVEINQ || GWCHKINT || GWCONNEC_TIMEOUT || || TMAX || O || O || O || || TMAXNONTX || O || O || O || || JEUS || O || X || O || || JEUS_ASYNC || O || X || O || || TUXEDO || X || X || O || || TUXEDO_ASYNC || X || X || O || || XAGW || X || X || X || || WSGW || X || X || X ||
-
-
IRT 기능 확장 - tmaxgw, jeusgw 지원
-
기존 tmaxgwnt에서만 동작하던 IRT 기능이 Tmax 5 SP2에서는 tmaxgw, jeusgw에서도 동작할 수 있도록 개선하였다.
-
GATEWAY 절에 COUSIN 설정의 경우에도 정상적으로 동작하도록 기능이 확장되었다.
-
-
tmaxgwnt에서 게이트웨이 간 채널 수를 1로 하는 -n 옵션 추가
-
기존의 게이트웨이 간의 채널 수는 2로 고정되어 있었다. 이로 인해 먼저 보낸 전문 1이 채널 1로, 나중에 보낸 전문2가 채널2로 GW1을 통해 보냈을 때, 받는 GW2쪽에서 전문2가 먼저 도착되어 처리되는 상황이 발생할 수 있었다.
-
Tmax 5 SP2에서는 이를 방지하기 위해 환경설정 파일에서 GATEWAY 절의 CLOPT에 게이트웨이 간의 채널 수를 1로 하는 -n 옵션을 추가하였다. -n은 인자를 받지 않는다.
*GATEWAY gw1 GWTYPE = TMAXNOTX, CLOPT = "-n"
-
관련 이슈 : IMS 70604
-
2.7. tcpgw thread gw
-
TCPGWHDR의 int user_thrmain(WORKTHRINFO *winfo, int server) 함수를 리턴할 경우에 대한 다음의 플래그 기능이 추가되었다.
플래그 설명 WTHR_ABNORMAL_RETURN
클라이언트 연결이 종료되면 로그가 출력된다.
WTHR_NORMAL_RETURN
클라이언트 연결이 종료되어도 로그가 출력되지 않는다.
-
관련 이슈 : IMS 68120
2.8. Tuxedo 게이트웨이
-
CLOPT 절 -D 옵션 추가
-
Tuxedo 게이트웨이에서 어떤 이유에서든 discard되는 메시지가 생길 수 있으며, 쉬운 분석을 위해 discard되는 메시지에 대한 기록을 남기는 기능이 추가되었다.
-
CLOPT 항목의 -D 옵션을 통해 설정 가능하다.
-
-
-h 옵션 추가
-
Tuxedo에서 로컬 게이트웨이를 여러 개 설정할 경우 각각의 게이트웨이가 각각 리모트에 연결을 시도하기 때문에 Tmax의 Tuxedo 게이트웨이에서는 하나의 연결이 맺어진 이후에 두 번째 시도하는 연결에 대해서는 다음과 같은 메시지를 반환한다.
(E) GATEWAY3010 connection error from remote gateway [TUXGW0002]
해당 메시지가 출력되지 않도록 CLOPT 항목에 -h 옵션을 추가하였다.
-
관련 이슈 : IMS 47268
-
-
RGWPORTNO 중복 허용
-
다수의 Tuxedo 게이트웨이를 등록할 경우 동일한 RGWPORTNO를 사용할수 있도록 기능 개선되었다.
-
관련 이슈 : IMS 50725
-
2.9. TCP/IP Thread 게이트웨이
-
TCP 게이트웨이의 Channel IRT 기능 추가
-
TCP게이트웨이를 COUSIN으로 설정할 경우 TCP 게이트웨이 Channel IRT 기능이 추가되었다. CLOPT 항목에 "-X CHANNEL_IRT 설정" 형식으로 설정한다.
-
관련 이슈 : IMS 40853
-
-
연결제어 Callback 함수 추가
-
allow_connection에 연결을 시도하는 리모트의 연결을 허용 및 불허하는 기능이 추가되었다.
-
리턴값을 설정한다.
설정값 설명 양수
허용
음수
불허
-
관련 이슈 : IMS 48279
-
-
TCP Thread 게이트웨이의 Channel IRT 기능 추가
-
TCP Thread를 COUSIN으로 설정할 경우 TCPGW Thread Channel IRT 기능이 추가되었다. CLOPT 항목에 -i 옵션으로 설정한다.
-
관련 이슈 : IMS 40853
-
-
TCP Thread 게이트웨이에 dedicated 모드에서 리모트의 새로운 연결을 바로 허용하도록 기능 추가
-
dedicate 모드에서 remoteCLI_A가 연결 중일 때 remoteCLI_B가 접속하게되면 A, B 모두 연결이 끊어진다. 그러나 remoteCLI_A 연결만 끊고 remoteCLI_B 연결은 허용하도록 -f 옵션이 추가되었다. CLOPT 항목에 -F 옵션으로 설정한다.
-
관련 이슈 : IMS 48279
-
2.10. 유틸리티
-
mksvr, mkcli의 -u 옵션 추가
-
mksvr, mkcli의 컴파일 옵션에 사용자 재정의 옵션 기능을 추가하였다.
-
mksvr 명령어가 자체적으로 설정한 플랫폼에 맞는 기본 컴파일 옵션을 제거하고 사용자가 지정한 컴파일 옵션으로 대체한다. 라이브러리 및 include 관련 옵션은 적용되지 않으므로 주의한다.
-
둘 이상의 옵션을 지정해야 할 경우 다음과 같이 설정한다.
$ mksvr -s TOUPPER,TOLOWER -o svr2 -f svr2.c -v -u "-m64 -O"
-
관련 이슈 : IMS 54034
-
-
tmdown에서 서버의 종료 여부를 묻지 않고 바로 종료되는 -y 옵션을 추가
-
멀티 노드 환경에서 노드명을 지정하지 않고 immediately server down을 실행하면, 서버를 종료할지에 대한 사용자 입력을 받게된다. 이때 사용자가 매번 서버의 수만큼 y(or n)을 입력해야 한다.
tmdown -y를 입력하면 이러한 사용자 입력을 받지 않는 옵션을 추가하였다.
$ tmdown -i -y
-
관련 이슈 : IMS 69697
-
-
tmaxlibver 빌드 버전 조회 기능 추가
-
tmaxlibver 빌드 버전 조회 기능을 추가하였다.
tmaxlibver {-l filename} {-d | -s} [-6] [-L directory] [-o arg] [-h]
자세한 내용은 Tmax Reference Guide의 tmaxlibver를 참고한다.
-
-
tmadmin set 기능 일부 비정상 동작 수정
-
tmadmin의 set으로 CLHQTIMEOUT, NLIVEINQ, LOAD를 변경해도 동작에 반영 안되는 문제를 수정하였다.
-
-
tmadmin에 시간 출력 기능 추가
-
tmadmin에서 명령어 수행에 대한 시작, 종료시간 출력할 수 있는 기능을 추가하였다.
-
-t 옵션을 설정하고 tmadmin을 실행하면 다음과 같은 형식으로 시간을 출력한다.
[TIME][종류 ] : hh:MM:ss:millisec
종류 설명 START
콘솔에서 명령어 실행시 시작시간을 출력한다.
END
콘솔에서 명령어 실행이 종료하면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).
R_END
콘솔에서 명령어를 실행하는 경우 리모트 노드의 수행이 종료되면 종료한 시간(tmadmin 을 실행한 로컬의 시간. 리모트 노드의 시간이 아님)을 출력한다.
RP_START
tmadmin의 repeat 명령어를 사용하여 수행시 한건의 명령을 시작 전 시간을 출력한다.
RP_END
tmadmin의 repeat 명령어를 사용하여 수행시 한건의 명령이 종료하면 종료 시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).
-
2.11. 클라이언트 / 서버
-
연결이 안된 상태에서 tpcall 호출할 경우 내부 tpstart하지 않는 기능 추가
-
연결이 안된 상태에서 tpcall 호출할 경우 내부 tpstart하지 않는 기능을 추가하였다.
환경변수 내용 TMAX_ACTIVATE_AUTO_TPSTART
'Y' 또는 'N’으로 설정하며 설정하지 않을 경우 기본값은 'Y’이다.
클라이언트 프로그램에서 tpstart를 명시적으로 호출하지 않고 tpcall, tpacall 등의 API를 호출하면 자동으로 tpstart(NULL)을 호출해서 Tmax 시스템과 연결한다. 이와같은 동작을 원하지 않을 경우에는 'N’으로 지정한다. 'N’으로 지정할 경우, tpstart()가 명시적으로 호출되지 않은 경우에는 TPEPROTO 에러가 발생한다. 이 옵션의 영향을 받는 API는 다음과 같다.
tpcall(), tpacall(), tpcallsvg(), tpacallsvg(), tpconnect(), tpchkunsol(), tpsetunsol(), tpgetunsol(), tpsubscribe(), tpsubscribe2(), tpunsubscribe(), tppost(), tpbroadcast(), tpgetcliaddr(), tpgetpeername(), tpgetsockname(), tpsleep(), tpgetactivesvr(), tpqsvcstat(), tpqstat(), tpenq(), tpdeq(), tpreissue(), tpmcall(), tpsvgcall(), tpenq_ctl(), tpdeq_ctl(), tx_begin()
-
관련 이슈 : IMS 65952
-
-
서버 프로세스 메모리 할당 실패시 강제 종료되도록 기능 추가
-
기존에 서버 애플리케이션의 사용자 작성 코드에서 메모리 누수 현상이 발생하고, malloc, realloc 등의 메모리를 할당 요청할 때 실패하는 메모리 full 상황에서, 서버 라이브러리가 CLH로부터 서비스를 요청받는 과정 중 특정 구간에서 realloc이 실패하게 되면 잘못된 메시지를 받게 되어 비정상 동작(hang현상 등)이 발생할 가능성이 있었다.
-
Tmax 5 SP2에서 메모리 할당이 실패하여 더 이상 서버 프로세스가 정상 동작할 수 없는 상황에 놓이게 될 경우 해당 서버 프로세스를 강제종료시키도록 변경하였다.
-
해당 현상이 발생될 경우 다음과 같은 로그가 출력된다.
SVR0006 memory reallocation error : size = n SVR0001 memory allocation error : size = n
-
관련 이슈: IMS 49711
-
-
tmadmin API에 tmadmin의 st -s -x 와 동일한 기능 추가
-
서버 라이브러리에서 제공되는 tmadmin() API에서도 유틸리티 tmadmin의 st -s -x 와 같은 기능을 추가하였다.
-
-x 옵션이 사용되는 옵션으로 st -s, st -p 명령이 있으며, tmadmin() API에 -x 옵션과 같은 동작을 하도록 TMADM_SVC_STAT_EX와 TMADM_SPR_STAT_EX 기능을 추가하였다.
-
tmadmin()의 cmd에 추가되는 사항과 이 경우에 적용되는 구조체 타입은 다음과 같다.
-
TMADM_SVC_STAT_EX
구조체 타입은 다음과 같다.
tmadm_svc_stat_ex, tmadm_svc_stat_ex_body
-
TMADM_SPR_STAT_EX
구조체 타입은 다음과 같다.
tmadm_spr_stat_ex, tmadm_spr_stat_ex_body
-
-
관련 이슈 : IMS 45159
-
-
tpacall할 때 응답 처리를 Callback하지 않고, tpgetrply에서 직접 응답 수신 기능 추가
-
UCS에서 tpregcb 함수를 사용하여 tpacall의 응답을 처리하는 함수로 Callback 함수를 등록할 수 있다. ucsmain(), tpsvctimeout()에서 tpacall의 응답 처리하는 방법은 Callback 함수를 호출하는 방법만 존재하였다.
이를 개선하여 tpacall에서 'TPNOCALLBACK' flag를 입력받으면, Callback 함수에서 처리하지 않고 tpgetreply에서 처리될 수 있는 인터페이스를 추가하였다.
-
-
SVCTIME 변경 가능 API 기능 추가
-
SVCTIMEOUT 값이 현재는 설정한 값으로 고정되어 있어 서비스 내부에서 상황에 따라 SVCTIMEOUT을 변경이 필요한 경우가 있다. 해당 상황에 서비스 내부에서 svc timeout 값을 변경해 주는 함수를 제공하여 SVCTIMEOUT을 변경 가능하도록 기능을 추가하였다.
tpsetsvctimeout(int sec, long flags)
자세한 내용은 Tmax Reference Guide의 tpsetsvctimeout를 참고한다.
-
-
서버에서 트랜잭션에 실패한 경우 tpsvctimeout 안에서 tperrno를 TPETRAN을 주도록 기능 추가
-
tx_commit(), tx_rollback() 내부적으로 xa_commit(), xa_rollback() 단계에서 SVCTIMEOUT이 발생하는 경우 tpsvctimeout()에서 이를 구별할 수 있도록 tperrno를 TPETRAN으로 설정할 수 있는 기능을 추가하였다.
-
관련 이슈 : IMS 51550
-
-
이전 버전 AUTOTRAN 호환 패치
-
일부 디버그 라이브러리 이름 형태 변경
-
libtcpgwd.gwh.* 파일 이름이 libtcpgw.gwhd.* 형태로 변경
-
libx25gwd.gwh.* 파일 이름이 libx25gw.gwhd.* 형태로 변경
-
2.12. 관리 도구
-
gwinfo 추가
-
tmadmin에 일반 게이트웨이들의 채널 상태를 확인할 수 있는 gwinfo 명령어를 추가하였다. 기존의 txgwinfo, jgwinfo 등도 마찬가지로 여전히 출력이 가능하다.
-
모든 게이트웨이의 연결 정보를 확인할 수 있다(예외로, 웹 서비스 게이트웨이는 지원하지 않는다).
-
사용 방법
$$1 tmax1 (tmadm): gwinfo [-w gw_name] [-t gw_type]
옵션 설명 [-w gw_name]
특정 게이트웨이만 정보를 조회한다. gw_name은 GATEWAY에 설정한 이름이다.
[-t gw_type]
특정 게이트웨이 종류만을 조회한다.
GATEWAY 절에 정의하는 TYPE(TMAX, TMAXNONTX, JEUS, JEUS_ASYNC, TUXEDO, TUXEDO_ASYNC, XAGW)으로 입력한다.
예) TMAX
-
-
게이트웨이의 동적추가(cfgadd) 기능추가
-
기존 버전에서는 게이트웨이의 동적추가는 불가능했다. Tamx 5 SP2에서는 모든 게이트웨이에 대해 동적으로 추가할 수 있는 기능을 추가하였다.
-
관련 이슈 : IMS 51383
-
-
qpurge count 조정 기능 추가
-
qpurge(qp) 옵션에 [-k Num] 옵션이 추가되었다.
-
사용법
qp -v svr2 [-k Num]
Num은 다음과 같이 설정이 가능하다.
입력값 설명 -1
현재 큐에 대기 중인 서비스 요청 중에서 MAXQCOUNT 개수만큼의 요청만 남기고 이후에 들어온 요청들을 purge시킨다.
0
현재 큐에 대기 중인 모든 서비스 요청들을 purge시킨다.
N (>0)
처음 들어온 N개의 gcount 요청만 남기고 이후에 들어온 요청들을 purge시킨다. 이 옵션은 반드시 –v 옵션과 함께 사용해야 한다.
-
관련 이슈 : IMS 64072
-
3. 변경 기능
3.1. 도메인 게이트웨이
-
도메인 게이트웨이의 연결 방식을 Non-block 방식으로 변경
-
게이트웨이가 리모트를 연결할 때 block이 되므로 리모트 머신(Remote Machine)이 살아있지 않거나 (OS down) 네트워크 문제로 인해서 connect가 정상 수행이 되지 않을 수 있다. 그
렇게 되면 게이트웨이로 보내진 요청은 바로 실패 응답을 받지 못하고 해당 타임아웃까지 기다린 후 응답을 받기 때문에 긴 응답시간을 가지게 되어 문제가 발생한다.
-
Tmax 5 SP2에서는 이를 해결하기 위해서 커넥션을 Non-block으로 변경하여 위와 같은 장애에도 응답을 지연 없이 보낼 수 있도록 기능을 보완했다.
-
3.2. Engine
-
CLH에서 ASYNC 타입 게이트웨이의 Outbound 스케줄링할 때 RR 방식으로 수정
-
GATEWAY 절의 TMAXGWNT 타입 서버에서 CPC를 통해서 CLH에서 스케줄링할 수 있는 채널의 수를 설정할 수 있다. 하지만 TMAXGWNT 타입의 경우 Outbound를 요청할 때에 한 개의 채널만 사용하고 있다.
-
Tmax 5 SP2에서는 CPC만큼 모든 채널을 고르게 사용할 수 있도록 RR(Round Robin) 방식으로 스케줄링을 수정하였다. 이 기능이 적용되는 게이트웨이는 TMAXGWNT, JEUS_ASYNC, TUXEDO_ASYNC가 있다.
-
GATEWAY 절에서 CPC를 설정하면 tmadmin에서 st -p 명령을 통해 각 채널로 스케줄링된 요청에 대해서 확인이 가능하다.
-
-
COUSIN 설정 개선
-
게이트웨이들에 대해서만 COUSIN 설정을 할 때 항상 일반 SVRGROUP을 등록하고 DUMMY 서버를 생성해야 하는 불편함이 있다. 따라서 GATEWAY 절에서 COUSIN 설정이 가능하도록 기능이 추가되었다.
-
다음과 같이 환경을 설정한다.
*SERVICE GWSVC SVRNAME = gw1 *GATEWAY gw1 NODENAME = node1, GWTYPE = TMAXNONTX, PORTNO = 10001, RGWADDR = "192.168.1.1", RGWPORTNO = 10002, LOAD = 1, CPC = 5, CLOPT = "-i", COUSIN = "gw1" gw2 NODENAME = node2, GWTYPE = TMAXNONTX, PORTNO = 10001, RGWADDR = "192.168.1.2", RGWPORTNO = 10002, LOAD = 1, CPC = 5, CLOPT = "-i"
-
-
CMTRET=N 기능 구현
-
환경설정 DOMAIN 절의 CMTRET = N 기능이 구현되어 있지 않아서 CMTRET을 N으로 설정해도 항상 Y로만 동작했었다.
-
Tmax 5 SP2에서는 CMTRET=N 기능이 동작하도록 보완하였다. CMTRET 항목은 complete return에 대한 내용을 결정한다. Y는 complete return을 의미하고 N인 경 우 빠른 처리를 위하여 commit/rollback 명령 후에 즉시 서비스를 반환하게 된다.
-
-
다수의 멀티 노드 부트에 속도 저하 현상 개선
-
멀티 노드 상에서 부트할 경우 다른 노드 연결을 시도한다. 이때 socket connect시 Blocking 구조로 연결을 시도하기 때문에 네트워크상의 이상 노드가 존재하면, 장시간 대기(한 노드당 30초 대기)하여 전체 시스템의 대기시간이 길어질 수 밖에 없다.
-
Tmax 5 SP2에서는 기동할 때 Non-block으로 연결을 시도하도록 구조를 변경함으로 느린 부트 현상을 개선하였다.
-
관련 이슈 : IMS 63303
-
-
TMM의 다른 프로세스에 write 재시도 방식 변경
-
TMM이 tmdown으로 보낸 메시지를 tmdown이 모두 읽기 전에 계속 write를 시도했을 때 기존에는 일정 횟수 이상 시도하면 실패로 간주하였다. write가 실패하면 싱글 노드에서는 tmdown 과정이 정상적으로 종료되나 멀티 노드에서는 local 노드만 tmdown 과정이 완료되고 리모트의 tmdown 과정이 실행되지 않았다.
-
Tmax 5 SP2에서는 이러한 문제점을 해소하기 위해 최소 1초가 지나야 write를 시도한 횟수를 증가시키도록하여 짧은 시간에 한 번에 많은 write 재시도가 발생하더라도 실패로 간주하지 않도록 수정하였다.
-
관련 이슈 : IMS 67087
-
-
NODE 절의 IP 설정하는 경우 CLL에서는 listen IP가 지정되지 않도록 기능 변경
-
NODE 절의 IP 지정은 클라이언트 요청을 받아들이는 포트를 열 때의 해당 IP를 지정하기 때문에 다른 IP로 접속을 요청하는 클라이언트는 접속이 실패한다. 편의상 IP 지정하지 않았을 경우처럼 listen하도록 CLL을 수정하였다.
-
DOMAIN 절과 NODE 절에 CLL_BIND_IP 항목을 설정한다.
설정값 설명 Y
기존과 동일하게 동작한다. (기본값)
N
IP를 bind하지 않고 모든 IP에 대해서 listen을 수행한다.
-
관련 이슈 : IMS 61500
-
3.3. 클라이언트 / 서버
-
tcs에서 svclog를 최소한 5분 뒤에 남기도록 보완
-
TCS 서버에서 svclog가 서비스 요청이 있을 경우 5분 후에 남을 수 있는 현상을 보완하여 5분 주기로 TMM에 svclog를 보내도록 수정하였다.
-
관련 이슈 : IMS 56485
-
-
tpsvrdone 함수안에서 서비스 호출시의 동작방식 변경
-
tpsvrdone 함수(서버 종료 함수) 내에서 tpcall이나 tpacall, tpgetreply를 수행할 경우 아직 서버의 상태가 RDY이므로 CLH에서는 서비스를 스케줄링한다. 이때 tpcall이나 tpgetreply에서는 해당 서비스 요청이 들어오면 TPESYSTEM을 발생시키고 반환하기 때문에 실제 tpcall, tpgetreply에 대한 응답을 수행할 수 없어서 문제가 발생할 수 있다.
tpsvrdone 안에서 다른 서버의 서비스를 호출할 경우가 있다. 이때 tpsvrdone이 실행되는 서버의 서비스가 호출 될 경우 tpsvrdone 안에서 호출한 서비스의 응답이 unknown message type 에러가 발생한다.
-
Tmax 5 SP2에서는 이런 상황(tpsvrdone)에서 tpcall과 tpgetreply가 성공할 수 있도록 read하는 부분에서 에러를 리턴하지 않고, 자신이 원하는 응답이 올 때까지 기다리도록 보완했다.
-
관련 이슈 : IMS 61897
-
-
tdlinit하지 않고 MAXMOUDULES 값 동적 변경 기능
-
tdlinit하지 않고 MAXMOUDULES 값을 동적으로 변경할 수 있는 기능이 추가되었다.
-
사용 방법은 다음과 같다.
-
환경설정(tdl.cfg) max값 변경
-
tdlinit -b (max 변경됨)
-
tdlsync (기본 백업 파일 재구성)
-
운영 (tdlupdate, tdlrm, tdlclean 등)
-
-
관련 이슈 : IMS 63443
-
3.4. TDL
-
dlopen만 수행하는 tdlshm -c 옵션 추가
-
공유 라이브러리가 정상인지 dlopen만 하는 기능이 추가되었다.
-
사용 방법은 다음과 같다.
$ tdlshm -c [end_index] [start_index end_index]
-
관련 이슈 : IMS 63443
-
-
tdlupdate -l 옵션 기능 개선
-
tdlupdate의 경우 동시 업데이트 가능한 모듈인 1024를 해제하여 한 번에 다수의 업데이트가 가능하도록 기능을 추가하였다.
-
관련 이슈 : IMS 66958
-
-
tdl run 디렉터리 분할 기능 추가
-
tdl run 디렉터리를 분할 사용가능하도록 기능을 추가하였다.
-
다음과 같이 tdl.cfg에 run dir과 mod dir을 명시한다.
*DIRMAPPINGLIST=(mod1:run1),(mod2:run2),(mod3:run3)
-
-
TDL HASH 성능 개선
-
TDL에서 내부적으로 사용되는 HASH가 기존의 Open Addressing의 Linear probing 방식에서 Coalesced chaining 방식으로 변경되었으며, HASH 함수 또한 키 값을 고르게 분산시켜 collision 발생 확률이 높지 않은 널리 알려진 함수로 적용하여 속도를 개선하였다.
-
3.5. 유틸리티
-
RACD를 통한 tmadmin 실행 구조 개선
-
기존에 RACD에 의해 기동할 수 있는 remote tmadmin은 단 하나만 가능했다. 이 때문에 사용자가 로컬에서 tmadmin 이후 다시 tmadmin -m을 통해 main 모드로 기동되면 remote에는 이미 tmadmin으로 기동되어 있기때문에 tmadmin -m이 기동할 수 없었다.
-
Tmax 5 SP2에서는 RACD에 의해 기동할 수 있는 remote tmadmin은 tmadmin, tmadmin -m 2개가 가능하도록 수정하였다.
-
관련 이슈 : IMS 68751
-
3.6. 관리 도구
-
cfgadd 기능 보완
-
기존에는 서비스를 동적 추가할 때 올바르지 않은 환경 파일(서비스의 등록 순서가 지켜지지 않고 누락되거나 위치가 바뀐 상태의 환경설정 파일)을 사용하여 cfgadd를 수행할 경우 중복 등록 현상이 발생하였다.
-
Tmax 5 SP2에서는 cfgadd 수행할 때 적용하려는 바이너리 환경 파일을 운영환경에 적용하기 전에 바이너리 환경 파일과 운영환경의 환경설정 상태를 비교하여 올바른 환경 파일인지 검증하는 작업을 수행함으로써 서비스 중복등록 현상 및 잘못된 환경 파일이 운영환경에 적용되는 현상을 방지한다.
-
사용 방법은 다음과 같다.
$ cfl -i tmconfig.m -a tmchg.m -o tmchg $$1 tmaxi1 (tmadm): cfgadd -i tmchg config is successfully added
-
cfgadd를 수행할 때는 2가지 텍스트 환경설정 파일이 필요하다. cfl에서 각각 옵션 -i와 -a 에 필요한 파일이며, 이때 -i 옵션의 파일은 가장 최신의 운영환경 변경 상태가 모두 적용되어 있어야 한다. 그렇지 않은 경우 cfl의 결과로 생성된 바이너리 환경파일은 올바르지 않게 된다.
-
관련 이슈 : IMS 56118
-
4. 버그 패치
4.1. 클라이언트/서버
-
UCS에서 savectx이후 tmdown -S에 의해 서버가 다운될 경우 클라이언트에게 실패 응답이 전달되지 않는 현상 수정
-
UCS에서 savectx이후 tmdown -S에 의해 서버가 다운될 경우 클라이언트에게 실패 응답이 전달되지 않는 현상을 수정하였다.
-
CTX_EREPLY = Y | N
-
기본값 : Y
-
UCS 서버 타입에서만 설정할 수 있다. 다른 서버 타입에서는 이 옵션을 사용할 수 없다.
-
UCS 타입의 서버에서 tpsavectx() 호출해서 클라이언트의 정보를 저장한 다음에 tprelay()를 호출하기 전에 tmdown -s, tmdown -s -i, 비정상 종료 등으로 인해 서버 프로세스가 종료되면 서비스 호출자는 해당 서비스 요청에 대한 응답을 받지 못한다. 'Y’로 설정하면 서버 프로세스가 종료될 때 아직 tprelay()로 처리되지 못한 요청건들에 대해서 호출자에게 에러 응답을 반환한다.
-
CTX_EREPLY 옵션을 기본값으로 설정하면 서버 프로세스가 종료하는 경우에 해당 프로세스에서 서비스가 처리되었던 요청건들에 대해서 호출자에게 에러 응답이 전달된다. 즉, 같은 서버의 다른 프로세스들은 영향을 받지 않는다. tpsavectx() 호출로 생성된 클라이언트 정보(CTX_T)를 서버 프로세스 내부적으로만 관리하는 경우에는 정상적으로 동작한다.
그러나 만약 클라이언트 정보를 IPC 등을 통해 여러 프로세스가 공유하고 특정 프로세스가 비정상 종료되더라도 다른 프로세스에 의해서 tprelay()를 처리할 수 있도록 구성된 환경에서는 정상적으로 처리할 수 있음에도 불구하고 에러 응답이 전달될 수 있다. 따라서 이러한 경우에는 설정값을 'N’으로 설정해서 에러 응답이 전달되지 않도록 설정한다.
-
-
-
svrlib에서 tmax_is_restarted 함수 오류 수정
-
asqcount나 adminapi에 의해 부트할 경우 tmax_is_restart 함수의 결과가 TRUE로 출력되는 현상을 FALSE로 출력되도록 하였으며 수정하였다.
경우에 따른 tmax_is_restarted 결과값은 다음과 같다.
결과값 설명 TRUE
kill로 종료한 경우
FALSE
-
tmboot의 경우
-
asqcount로 부트한 경우
-
adminapi로 부트한 경우
-
tmadmin의 rbs로 부트한 경우
-
-
관련 이슈 : IMS 41426
-
-
tpacall with TPNOREPLY flag 설정 후 tpreturn()시 에러 발생 오류 수정
-
TPNOREPLY flag를 설정하고 tpacall()로 서비스를 호출하면, 서비스에서 필드 버퍼를 tpreturn()하게 될 때 약간의 서비스 수행시간이 있을 경우 TPEITYPE 에러가 발생하는 현상 수정하였다.
-
관련 이슈 : IMS 56121
-
-
RDP 서버 사용 중 3.x 버전과 5.x 버전의 클라이언트가 혼재 상태일 때 5.x 버전의 클라이언트에서 tpcall 메시지를 수신하지 못하는 오류 수정
-
RDP 사용 중 3.x 버전과 5.x 버전의 클라이언트가 혼재된 상황에서는 3.x 버전의 클라이언트를 접속한 후 5.x 버전의 클라이언트의 순서로 접속한다. 이 상태에서 특정 애플리케이션에서 tpbroadcast가 발생했다면, 5.x 버전의 클라이언트를 tpcall할 경우 메시지를 수신하지 못하는 현상을 수정하였다.
-
관련 이슈 : IMS 67971
-
-
tprecv, tpgetrply 등의 함수에 flags TPNOBLOCK를 적용할 때 blocking 발생하는 경우 TPETIME을 반환하는 현상을 수정
-
TTPNOBLOCK을 설정하는 경우 호출 시점에 즉시 응답 메시지를 받으면 정상 리턴을 하고, 응답 메시지를 받지 못했으면 기다리지 않고 즉시 에러 리턴하며 TPEBLOCK이 반환되도록 수정하였다.
-
관련 이슈 : IMS 64795
-
-
XAOPTION="DYNAMIC"이 설정된 서버 그룹에서 tpreturn() 호출하는 경우 tx_connection_reset 수행 오류 수정
-
Tmax 5 SP1부터 환경설정의 SVRGROUP 절에 XAOPTION="DYNAMIC"이 설정되어 있으면 tpreturn() 또는 tpforward() 수행될 때 RM 재연결하도록 되어 있고 로그가 slog에 재연결할 때마다 기록되고 있다.
-
그러나 tpreturn()하는 경우 트랜잭션이 진행 중이면 xa_end()를 호출하고 나서 항상 RM에 재연결하는데, xa_end()가 실패할 경우에만 RM에 재연결하도록 수정하였다(로그 발생 안됨).
-
-
tmadmin API TMADM_SVC_STAT 조회 오류 현상 수정
-
tmadmin API TMADM_SVC_STAT 조회할 때 NRDY인 서비스가 RDY로 보이는 현상을 수정하였다.
-
관련 이슈 : IMS 42818
-
-
AIX 서버 라이브러리에서 누락된 심볼 추가
-
Tmax 3.14.6 AIX 서버 라이브러리에서 gettperrno, gettpurcode, getfberrno, getfberror 함수들의 심볼이 export되지 않아서 해당 함수를 사용한 서버 애플리케이션 프로그램을 컴파일하면 "ld: 0711-317 ERROR: Undefined symbol: .gettperrno"와 같은 오류가 발생하면서 실패하는 현상을 수정하였다.
-
관련 이슈 : IMS 50841
-
-
AIX libclithr에서 magic number 오류 현상 수정
-
AIX에서 libclithr 사용하여 Multithread/Multicontext 환경으로 TMAX API를 사용할 때 tpcall, tpend에서 다음의 오류가 랜덤하게 발생하는 현상을 수정하였다.
(E) CLH0200 magic number errorfrom client(192.168.1.87): 0 0 0 0 [CLH0516]
(E) CLI0209 internal error : unknown message type :1002 [CSC5713]
(E) CLI2008 tpcall reply arrived after timeout. Msg discarded : 1003 1 [CSC5708]
-
관련 이슈 : IMS 43841
-
4.2. Engine
-
CLH가 재시작 이후 멈춰있는 현상에 대한 버그 수정
-
CLH가 비정상 종료하는 상황에서 서버가 부트하여 먼저 lock을 설정한 이후 CLH가 lock을 설정하려고 할 때 Hang 현상이 발생한다. CLH 비정상 종료 이후의 보완 처리로 재부트 이후 서버와의 deadlock 상황으로 인해 CLH가 재시작이 멈춰있는 현상에 대한 버그를 수정하였다.
-
관련 이슈 : IMS 58188
-
-
TMM 비정상 종료 현상 수정
-
TMM에서 서버로부터 길이가 비정상인 메시지 수신시 비정상 종료하지 않도록 수정하였다.
-
관련 이슈 : IMS 59047
-
-
CLH에서 core 발생 현상 수정
-
운영중 CLH에서 core 발생 현상을 수정하였다.
Segmentation fault in free_y at 0x900000000057794 ($t1) 0x900000000057794 (free_y+0x344) e9490008 ld r10,0x8(r9) (dbx) where free_y(??, ??) at 0x900000000057794 free_common(??) at 0x900000000055724 free_hp(hp = 0x0000000116c62c10), line 2452 in "etc.c" tpreturn_msg(i = 6997, hp = 0x0000000112e57eb0, sendtype = 0), line 1124 in "csmsg.c" process_server_msg(sp = 0x0000000110da6808, hp = 0x0000000112e57eb0), line 1773 in "main.c"
-
관련 이슈 : IMS 40564
-
-
tpconnect() 호출할 때 CLH에서 비정상 종료하는 현상 수정
-
tpconnect()를 호출하면 CLH에서 AP로 tpconnect 요청을 전달하고,AP에서 해당 요청을 받아서 처리하기 전에 먼저 CLH로 응답 메시지를 전달한다. CLH에서 응답 메시지를 처리하는 과정에서 잘못된 오류가 발생해서 랜덤하게 비정상 종료되는 현상을 수정하였다.
-
관련 이슈 : IMS 68868
-
-
CLH 공유 메모리 오류 수정
-
UCS usermain() tpreturn() 사용하는 경우, CLH의 공유 메모리의 일부가 깨지는 현상이 발생하였다. 이 경우 tmadmin에서 특정 CLH에 대한 서비스나 서버 프로세스 정보가 조회되지 않으며, 이후 재시작한 서버는 TPENOREADY 에러가 발생한다. 해당 현상이 발생하지 않도록 CLH에 공유 메모리 오류 방어 로직을 추가하였다.
-
-
UCS 타입 서버가 비정상 종료할 경우 CLH 비정상 종료 현상 수정
-
CLH로 서비스 요청이 들어와서 UCS 타입이거나 또는 STD 타입이 아닌 서버 프로세스로 메시지를 전달하는 과정에서 해당 프로세스가 비정상 종료하거나 서버와 CLH 사이의 소켓 연결에 문제가 발생할 경우 CLH가 무한 재귀호출되면서 stack overflow가 발생하여 비정상 종료하는 현상 수정하였다.
-
관련 이슈 : IMS 62143
-
-
TXTIME이 지난 이후 tpcall(TPNOTRAN)이 호출은 되지만 TPETIME이 리턴되는 현상 수정
-
CLH에서 CPU 과점유 현상 수정
-
FD16384의 eCLH에서만 발생하는 현상으로 CLH에서 CPU 과점유 현상을 수정하였다.
-
관련 이슈 : IMS 40564
-
-
tmconig에서 지정한 envfile에서의 특수문자 인식 오류 수정
-
Tmax 환경 파일에서 지정한 envfile에서 특수문자를 사용할 경우 '$' 인식 및 알파벳, 숫자, _ 인 문자열로 변수 지정이 가능하도록 기능을 개선하였다.
-
관련 이슈 : IMS 65389
-
-
tmdown에서 백업노드의 백업 서버가 기동되는 현상 수정
-
액티브 노드와 백업 노드를 함께 재기동했을 때 액티브 노드가 아직 종료되지 않은 시점에 백업 노드의 재기동이 완료되면 액티브 노드의 종료를 백업 노드가 비정상 종료로 인식하고 서버를 기동시키는 현상을 기동되지 않도록 수정하였다.
-
관련 이슈 : IMS 68089
-
-
fd 16384에서 RDP 서버를 호출하는 경우 CLH0209 internal error 에러 발생 현상 수정
-
RDP 서버를 설정한 경우에 클라이언트에서 tpstart()를 호출하면 CLH에서 비정상적인 메세지를 무한 반복해서 출력하는 현상이 발생하며, 클라이언트의 tpstart() 처리도 정상적으로 진행되지 않는 현상을 수정하였다.
-
-
DYNSVR 트랜잭션의 경우 CLH 비정상 종료 현상 수정
-
STD_DYN 타입의 서버에서 tx_begin()으로 트랜잭션을 시작한 다음 tpcall()로 일반 서버를 요청하고, 요청된 서버에서 tpcall()로 일반서버를 요청하는 경우에 CLH가 비정상 종료되는 현상을 수정하였다.
-
관련 이슈 : IMS 65387
-
-
COUSIN 구성 tpacall 비정상 처리 현상
-
COUSIN svc에 대해서 tpacall TPBLOCK|TPNOREPLY으로 요청할 때 가용한 서버가 없을 경우 클라이언트에서 응답을 받지 못하는 오류를 수정하였다.
-
관련 이슈 : IMS 45359
-
-
COUSIN 설정이 없는 노드에서 COUSIN SVC를 호출하는 경우 오동작 현상 수정
-
COUSIN 설정이 없는 노드에서 COUSIN SVC를 호출하는 경우 IRT를 하지 못하는 오류를 수정하였다.
-
관련 이슈 : IMS 45359
-
-
tmdown 비정상 종료시 에러 메시지 발생 현상 수정
-
tmdown 비정상 종료하는 경우 다음과 같은 에러가 발생하지 않도록 수정하였다.
(E) SVR0209 internal error : invalid msg type 1108 [SVR0029]
-
관련 이슈 : IMS 46969
-
-
UNADV 기능 오류 수정
-
SVR의 MIN과 MAX가 같지 않을 경우에 UNADV를 적용해도, CALL에 대해 TPENOENT가 반환되지 않고 CQ_CNT가 증가되는 문제를 수정하였다. 단, 서버의 비정상 종료로 인한 재기동 그리고 추가적으로 기동시키는 서버에 대해서는 UNADV가 적용되지 않는다.
-
관련 이슈 : IMS 39622
-
-
tmdown –S 옵션으로 서버를 종료하여도 asqcount에 의해 서버가 부트되는 현상
-
기존에는 tmdown –S svrname으로 전체 서버를 종료시킬 경우 서버가 서비스를 수행하는 동안 클라이언트에서 요청이 들어와서 asqcount에 의해서 서버가 자동 부트되는 경우 실제로 down이 끝나도 살아 있는 spr이 남는다.
Tmax 5 SP2에서는 tmdown –S 옵션으로 종료하는 경우 그 이후에 사용자에 의해 tmboot로 서버가 시작될 때까지는 자동으로 부트되어 접속하는 서버는 접속을 종료시키도록 기능을 보완했다. 또한 asqcount에 의해 자동으로 서버를 시작하지 않도록 기능 보완했다
-
관련 이슈 : IMS 41426
-
-
mksvr로 추가된 서비스에 대해 알지 못하는 오류 수정
-
mksvr로 COUSIN 서비스를 동적 추가하는 환경에서 COUSIN과 상관없는 노드를 재부팅할 경우 해당 노드는 동적 추가된 서비스 정보를 알지 못하는 오류를 수정하였다.
-
예제
*NODE A B C *SVGROUP GA NODENAME = A, COUSIN = "GB" GB NODENAME = B GC NODENAME = C *SERVER VA SVGNAME = GA
위 환경에서 A, B, VA가 부트되어 있고, 이후에 C가 부트될 경우 C에서는 VA에 있는 서비스 정보를 인지하지 못해 C의 클라이언트가 VA의 서비스를 호출할 경우 TPENOENT가 tperrno에 설정되어 제대로 동작하지 않는다.
-
관련 이슈 : IMS 42902
-
-
tpforward의 경우 tmadmin의 st -p count가 증가되지 않는 현상 수정
-
Non-TX 도메인 게이트웨이를 이용하여 tpcall할 때 상대방에서 응답을 tpreturn이 아닌 tpforward로 줄 경우 tpforward를 수행하는 서비스가 제일 처음 호출자인 도메인이면 게이트웨이의의 count가 증가되지 않는 현상으로, 기존에는 응답을 받아야지만 count 및 svctime, fail_count, error_count가 증가되었다.
-
Tmax 5 SP2에서는 다음과 같이 수정되었다.
-
Async 타입의 게이트웨이(TMAXNONTX, TOPEND_STDGW, JEUS_ASYNC, TUXEDO_ASYNC)가 스케줄링할 때 spr의 게이트웨이의 COUNT가 증가한다.
-
게이트웨이를 통해서 응답을 받는 경우, 게이트웨이의 svctime, fail_count, error_count의 증가로 변경된다. tpforward로 받을 경우에는 이 부분은 증가되지 않는다.
-
게이트웨이로 스케줄링할 경우 항상 RDY 상태이다.
-
-
관련 이슈 : IMS 49974
-
-
DYN 서버에서 호출할 때 응답을 받지 못하는 오류 수정
-
DYN으로 설정한 서버들에서 다른 DYN 서버로 tpcall, tpcall, tpsuspend, tpresume, tpforward 등 대화형 통신할 때 응답을 받지 못하는 오류 수정하였다.
-
관련 이슈 : IMS 54342
-
-
DYN 서버 설정의 경우 일반 서버 부트 실패 오류 수정
-
DYN 서버 설정 이후에 일반 서버 설정이 있을 경우 tmboot될 때 일반 서버 부트가 실패하는 현상을 수정하였다(기존에 spr수가 MAXTMS를 합한 수 보다 좀 더 이후에 설정되어 있는 경우 반드시 발생).
-
-
노드 backup 설정의 경우 backup 비정상 동작 오류 수정
-
Tmax 5에서 SVRGROUP 절에 AUTOBACKUP 옵션이 추가되면서 파생된 버그로 서버 그룹의 백업을 설정할 때 정상적으로 백업를 기동하지 못하는 오류가 수정되었다.
-
-
NCLH 간 재연결 보완
-
두 노드 모두 기동된 상태에서 TMM 간의 연결을 맺을 때 CTD 상태로 오래 지속되는 경우 연결을 해제하도록 기능을 보완하였다.
-
관련 이슈 : IMS 54501
-
-
COUSIN 설정을 사용할 경우 운영 중 CLH의 메모리 누수 현상 해결
-
Tmax 4에서 IRT 기능 추가 이후 발생한 버그로, COUSIN으로 설정된 서버들의 잦은 재부팅으로 인해서 발생하는 CLH 메모리 누수 현상을 수정하였다.
-
관련 이슈 : IMS 58188
-
-
암호화 기능을 사용할 경우 tpstart에서 TPEOTYPE, TPECLOSE 에러 발생 현상 수정(Windows client)
-
암호화 기능을 사용할 경우 tpstart()를 호출하면 TPECLOSE 또는 TPEOTYPE이 간헐적으로 발생하는 현상을 수정하였다(Windows client에서만 발생).
-
관련 이슈 : IMS 64262
-
-
Event CLH에서 클라이언트 연결을 종료하는 경우 자원 정리가 정상적으로 되지 않는 오류 수정
-
4Node 환경에서 racd를 통하지 않고 각 노드별로 콘솔에서 동시에 tmboot -n <hostname>으로 기동시킬 때 CLH가 기동된 이후 다른 서버들이 기동하지 못하는 현상을 수정하였다.
-
-
일부 프로세스에 대한 suspend 수행시 상태 이상 현상 수정
-
STD_DYN, UCS_DYN 타입의 서버에서 MAX 값을 조정한 다음 일부 서버 프로세스만 suspend시키는 경우에 해당 서버의 상태가 BLOCK 상태로 변경되는 현상을 수정하였다.
-
관련 이슈 : IMS 63753
-
-
cfgadd 기능 수행후 CLH의 Hang 현상
-
멀티노드 환경에서 cfgadd 명령으로 서버를 추가하는 경우에 CLH에서 Hang 현상이 발생하면서 클라이언트 또는 서버들의 요청을 정상적으로 처리하지 못하는 현상을 수정하였다.
-
관련 이슈 : IMS 63760
-
-
tmdown -S svrname -i로 종료할 때 서버가 모두 종료되지 않는 버그 수정
-
STD_DYN이 혼용된 환경에서 tmdown -S svrname -i 옵션으로 서버들을 순차적으로 종료할 때 특이한 서버가 전부 down되지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 61787
-
-
TMM fork 제어기능 버그, ASQCOUNT 기동 요청 지연 처리될 때 해당 요청이 취소되는 현상 수정
-
TMM에서 ASQCOUNT에 의한 기동요청을 처리할 때 기존 fork를 처리 중인 프로세스 개수가 -F 옵션에 설정한 임계치에 도달해서 해당 요청에 대한 fork가 지연되었을 경우에 이후에 fork를 재개할 때 cur 값이 max에 도달했는지 체크하는 로직에 의해서 기동이 취소되는 현상이 발생하였다. 또한 시간이 조금 지나서 TMM3033 " svr (svrname) booting time (10) is over" 에러가 발생하였고, 이로 인해서 cur는 max에 도달했으나 실제 기동된 프로세스 개수는 cur보다 적은 상태가 발생하였다.
-
fork가 재개될 때 cur, max에 대한 체크로직에 대해 기능을 강화하여 이러한 현상이 발생하지 않도록 수정하였다.
-
관련 이슈 : IMS 65847
-
-
노드 기동시 일반 서버 그룹의 mksvr로 동적추가된 서비스 목록 전달 중에 TMM 비정상 종료 현상 수정
-
멀티 노드 환경에서 특정 노드만 tmboot를 하면 TMM이 비정상 종료되는 현상이 발생하였다. 특정 노드가 tmboot되면 기동 과정에서 다른 노드들과의 세션을 연결한 뒤 자신의 노드에 있는 동적 추가된 서비스 목록을 상대 노드로 전달하고, 상대 노드 또한 자신이 가진 동적 추가된 서비스 목록을 새로 기동된 노드에 전달하는 과정이 있다. 그러나 mksvr로 작성된 환경설정에는 존재하지 않는 동적 추가된 서비스를 포함하는 서버가 존재하고, 해당 서버가 COUSIN 그룹에 속하지 않는 경우(단일 서버 그룹이거나 백업 서버 그룹)에 TMM이 비정상 종료되었다. 단, 이러한 환경 구성이더라도 tmboot될 때 항상 발생하는 것은 아니며, 간헐적으로 발생하지 않을 수 도 있다.
이와 같이 노드를 기동할 때 일반 서버 그룹의 mksvr로 동적추가된 서비스 목록을 전달 중에 TMM 비정상 종료현상을 수정하였다.
-
관련 이슈 : IMS 68699
-
-
tmboot 진행 중에 tmdown하는 경우 down이 완료된 이후에도 서버 프로세스가 실행 중인 상태를 방지
-
tmboot 진행 중에 tmdown하는 경우 down이 완료된 이후에도 서버 프로세스가 실행 중인 상태를 방지하기 위해 다음과 같은 사항들을 수정하였다.
-
TMM은 tmdown이 시작되고 나면 더이상 새로운 서버들의 register 요청을 처리해주지 않는다.
-
서버 프로세스는 자신이 종료하기 전에 TMM이 종료되면 스스로 종료한다.
-
tmdown은 Tmax 전체 종료를 진행 중에 <ctrl> + c 등의 방법으로 진행을 중단할 경우, 이후 다시 tmdown을 실행시키려면 반드시 -i 옵션을 사용한 경우에만 허용된다.
-
-
관련 이슈 : IMS 63647
-
-
tmdown 중 <ctrl> + c이후에 tmdown -i로 종료할 때 엔진이 종료되지 않는 버그 수정
-
tmdown 중 <ctrl> + c로 중단한 다음에 다시 tmdown -i로 종료하면 TMM과 AP들만 종료되고 나머지 엔진이 종료되지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 68742
-
-
tmdown -S 중 <ctrl> + c 이후에 tmdown -S로 종료할 때 서버가 재기동하는 현상 수정
-
tmdown -S로 서버를 종료하던 도중 <ctrl> + c로 중단하고, 다시 tmdown -s로 서버를 종료시키면 첫 번째 down 요청으로 종료 중이던 서버 프로세스가 두 번째 down 요청을 할 때 비정상 종료되면서 재기동되는 현상을 수정하였다.
-
4.3. 유틸리티
-
cfl -r 기능 오동작 수정
-
CLH에서 maxuser 계산하는 방식의 변경을 적용하였다.
-
관련 이슈 : IMS 64318
-
-
racd에서 sleep으로 인해 tmadmin 처리가 늦어지는 현상 수정
-
멀티 노드 환경에서 tmadmin 조회(racd를 통한 원격 연결) 종료 후 tmadmin 재실행될 때 지연 현상을 수정하였다.
-
관련 이슈 : IMS 64760
-
-
tmdown 시 -p 옵션값을 MAXSPR + 8192 이상 설정할 경우 비정상 종료 현상 수정
-
tmdown을 실행할 때 -p 옵션 값을 MAXSPR + 8192 이상 설정하면 비정상 종료되는 현상을 수정하였다.
-
관련 이슈 : IMS 68326
-
-
tmboot -h 출력 내용에 -w 옵션에 대한 설명 추가
-
tmboot -h 출력 내용에 -w 옵션에 대한 설명이 누락되어 있어서 추가하였다.
-
관련 이슈 : IMS 69364
-
-
Dynamic Svr의 tmdown -p 명령에 대해 정상 수행하지 못하는 오류 수정
-
tmdown -p로 STD_DYN, UCS_DYN type의 서버 프로세스를 종료할 경우 정상 수행하지 못하는 오류를 수정하였다.
-
4.4. 도메인 게이트웨이
-
도메인 게이트웨이로 상대노드 서비스 호출시 TPERRNO 24(TPENORDY) 발생 오류 수정
-
Tmax Non-TX 게이트웨이가 COUSIN으로 구성된 경우 다음과 같은 순서로 이루어져서, 해당 게이트웨이로 스케줄링하지 못하는 현상이 발생했다.
-
CLH에서 스케줄링
-
게이트웨이 간 연결 종료
-
스케줄링 된 요청을 게이트웨이에서 실패 처리
-
게이트웨이 간 재연결
-
게이트웨이가 TMM으로 채널 연결되었다는 메시지 전송
-
TMM이 CLH에게 채널 연결 성공 메시지 전송
-
CLH가 해당 게이트웨이로 보낼 수 있는 상태라고 판단
-
CLH가 3번 과정에서 게이트웨이로부터 온 요청을 수신하여 보낼 수 없는 상태라고 판단
이와 같은 현상을 수정하기 위해 게이트웨이에서 TMM, CLH로 응답을 줄 경우 seqno를 적용하여 늦게 온 응답은 적용하지 않도록 하였다. 또한, 보완으로 게이트웨이 채널이 연결된 상태에서 NLIVEINQ, GWCHKTINT 시간 주기로 살아 있다는 메시지를 각 CLH에 전달하여 스케줄링될 수 있도록 수정하였다. 만약 NLIVEINQ와 GWCHKINT가 함께 설정되어 있다면 GWCHKINT 주기로 보낸다.
-
-
관련 이슈 : IMS 62408
-
4.5. 관리 도구
-
COUSIN 게이트웨이의 suspend / resume 버그 패치
-
게이트웨이(twgw, tmgwnt 등)를 일반 서버 그룹을 이용하여 COUSIN으로 구성할 경우, 묶은 일반 서버 그룹의 서버를 sp -v로 suspend할 때 게이트웨이는 suspend가 되지 않았다. 또한 게이트웨이를 sp -v로 suspend할 경우 해당 게이트웨이 서버만 suspend되었다.
이러한 COUSIN으로 구성된 게이트웨이의 suspend 비정상 동작을 수정하였다.
-
관련 이슈 : IMS 45659
-
-
tmadmin ntxgwi 정보 불일치 현상 수정
-
COUSIN이 설정된 tmaxgwnt를 tmdown -i로 종료할 경우 채널 정보가 살아있는 상태로 조회되는 현상을 수정하였다.
-
관련 이슈 : IMS 49802
-
-
서버 상태 비정상 조회 현상 수정
-
STD_DYN, UCS_DYN 서버들의 st -v로 조회할 때 잘못된 결과를 가져오는 오류가 수정되었다.
-
관련 이슈 : IMS 54177
-
-
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 54177
-
-
tmadmin cfg 내용 수정
-
tmadmin cfg 내용 중 다음과 같이 비정상 표기되는 오류가 수정되었다.
-
tmadmin cfg -n, -g에서 maxrstart 값 보여지도록 수정
-
tmadmin cfg -v rs [Y/N]에서 [Y/N]을 숫자로 입력 받았던 버그 수정
-
-
관련 이슈 : IMS 67759
-
-
st -s 정보 sort 옵션( -o )을 사용할 때 -x 옵션 결과 비정상 출력 수정
-
tmadmin st -o 옵션을 사용할 때 발생하는 다음과 같은 문제를 수정하였다.
-
tmadmin에서 st -s 혹은 -p에서 추가 옵션인 -x(자세한 정보)와 -o(정렬) 옵션을 같이 사용하면 -x 옵션의 자세한 정보 중에 일부분이 보이지 않던 문제 수정
-
st -p -x -o 시에 -x에서 utime부터 smaxtime까지 먼저 출력하고 그 뒤에 일반 정보부터 보여주는 문제 수정
-
-
관련 이슈 : IMS 69155
-
4.6. Java 게이트웨이
-
CLOPT 항목의 -a 옵션을 사용할 때 비정상 종료 현상 수정
-
JEUS_ASYNC 타입의 GATEWAY 절에서 CLOPT 항목에 -a 옵션을 추가하여 파일을 지정할 때, 해당 파일이 실제로 존재하지 않을 경우 게이트웨이가 비정상 종료하는 현상을 수정하였다.
-
관련 이슈 : IMS 71122
-
-
javagwa에서 리모트를 호출할 때 TPESYSTEM 발생 현상 수정
-
Tmax에서 webtasync(jtmax)로 요청 중 javagwa에 -n 옵션과 -A 옵션을 같이 사용할 경우 alive check msg가 전송되고 응답을 받지 않은 상태에서 CLH로부터 요청이 들어온 경우 TPESYSTEM 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 41526
-
-
JAVAGW/JAVAGWA CLOPT 항목의 -H 옵션 버그 패치 및 CDATE 매크로 변경
-
JEUS_ASYNC타입의 GATEWAY 절에서 CLOPT 항목에 -a 옵션을 추가하여 파일을 지정할 때, 해당 파일이 실제로 존재하지 않을 경우 게이트웨이가 비정상 종료하는 현상을 수정하였다.
-
CLOPT 항목에 -D[1|4|7] -H 옵션을 적용할 경우 alive check 되는 현상을 수정
-
CDATE로 날짜 변경시 로그 파일이 생성되도록 수정
-
-
관련 이슈 : IMS 70952
-
4.7. Tuxedo 게이트웨이
-
Tuxedo 게이트웨이에서 SIGHUP 시그널을 수신할 때 종료 현상 수정
-
tuxgw, tuxgwa에서 SIGHUP 수신할 경우 종료하는 현상을 수정하였다.
-
관련 이슈 : IMS 51608
-
-
Tuxgw를 통해 정의되지 않은 서비스를 호출할 때 TPETIME 발생 현상 수정
-
Tuxedo 게이트웨이를 통해 Tuxedo에서 정의되지 않은 FML Buffer 서비스를 호출하면 TPESYSTEM이 발생하도록 수정하였다.
-
관련 이슈 : IMS 65904
-
-
Tuxedo Gateway socket listen할 때 잘못된 메모리 참조 가능성 수정
-
Tuxedo Gateway socket listen할 때 잘못된 메모리를 참조할 가능성이 있는 부분을 수정하였다.
-
4.8. TDL
-
tdlupdate 중 tdlcall할 경우 정합성이 보장되도록 오류 수정
-
tdlupdate 중 tdlcall할 경우 신규 모듈이 호출되는 현상을 tdlupdate 완료 이후 호출되도록 수정하였다.
-
관련 이슈 : IMS 66958
-
-
core 발생 현상 수정
-
모니터링 기능을 동적으로 변경한 후 tdlcall을 수행할 때 core가 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 39497
-
-
MONITOR=Y를 설정할 경우 TDL을 사용하는 프로세스 메모리 과다 사용 수정
-
tdl.cfg의 MONITOR=Y를 설정할 경우 tdlcall을 사용하는 서버나 클라이언트에서 메모리 사용량이 MAXMODULE에 비례해서 증가하는 현상을 수정하였다. MONITOR=Y 기능을 사용해도 MONITOR=N일 경우와 마찬가지로 메모리 사용량이 적게 사용되도록 수정하였다.
-
관련 이슈 : IMS 39622
-
-
tdlclean을 실행할 때 오류 메시지 보강
-
tdlclean을 실행할 때 '/run' 디렉터리의 모듈 중 다른 프로세스에서 해당 라이브러리를 사용하고 있는 경우 unlink의 특성상 삭제가 되지 않았다. 그러나 로그에는 실제로 삭제되지 않았으나 'removed’되었다고 표시되므로, 삭제되지 않았을 경우 로그를 남기도록 수정하였다.
(W) TDLCLEAN: cannot remove lib001.4a4eb491 in use[TDL0546][Text file busy]
-
관련 이슈 : IMS 48530
-
4.9. WebtService 게이트웨이
-
WebService 게이트웨이(WSGW)에서 존재하지 않는 웹 서버로 요청할 경우 무한 대기 현상 수정
-
WebService 게이트웨이(WSGW)에서 존재하지 않는 웹 서버로 요청시 발생한 무한 대기 현상을 GWCONNECT_TIMEOUT 이후에 실패 응답을 줄 수 있도록 수정하였다.
-
4.10. WebT
-
magic number error 발생하는 현상 수정
-
WebT String Buffer NULL 값으로 설정 후 호출할 경우 magic number error 발생하는 현상을 수정하였다.
-
관련 이슈 : IMS 67917
-
4.11. WebAdmin
-
WebAdmin CRYPTPORT 인식 오류 수정
-
Tmax의 환경설정 파일에 CRYPTPORT가 있을 경우 WebAdmin에서 해당 노드에 정상접근 가능하도록 수정하였다.
-
-
WebAdmin agent 등록에서 Connection 수 변경시 기존 Connection이 남아 있는 오류 수정
-
Tmax WebAdmin에서 [Agent 등록] 메뉴를 통해 도메인을 수정할 때 connection 수를 변경해도 기존 connection들이 사라지지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 66143
-
-
WebAdmin에서 GATEWAY 절의 CLOPT 항목을 비정상 처리하는 오류 수정
-
Tmax WebAdmin에서 환경설정 파일을 수정할 때 GATEWAY 절의 CLOPT 항목에 " "값을 입력할 수 있도록 수정하였다.
-
관련 이슈 : IMS 66363
-
-
WebAdmin에서 상태 트리가 아무것도 출력되지 않는 오류 수정
-
wsgw에서 환경설정 파일 읽거나 로그 파일을 읽을 때 메모리 침범 오류 때문에 발생하여 해당 부분을 정상 처리하도록 수정하였다.
-
관련 이슈 : IMS 66353
-
-
WebAdmin에서 도메인 삭제 및 사용자 삭제 실패 오류 수정
-
Tmax WebAdmin에서 도메인을 등록하고 해당하는 도메인으로 환경설정 파일을 저장, 임시 파일 저장을 한 번이라도 수행하면 도메인이 삭제되지 않는 현상을 수정하였다.
사용자 또한 위와 같은 경우에 삭제되지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 66353
-
-
동일 에러 메시지가 발생하는 경우 에러 코드가 누적되어 보이는 현상 수정
-
동일 에러 메시지가 발생할 경우 에러 코드가 누적되어 보이는 현상을 수정하였다.
-
관련 이슈 : IMS 66353
-
-
STD_DYN, UCS_DYN 서버들을 WebAdmin의 서버 프로세스 정보 보기 메뉴에서 정상 출력하지 못하는 오류 수정
-
Tmax WebAdmin에서 서버 프로세스 정보 보기 기능을 수행할 때 테이블에 STD_DYN, UCS_DYN 서버들의 정보가 잘못 보이거나, 누락되어 보이지 않는 현상을 수정하였다.
-
관련 이슈 : IMS 66353
-