티스토리 뷰
안녕하세요. 2019년 2월 8일자 IBM 알림 메일 내용 중 My notifications의 인포믹스 결함 내용을 소개드립니다.
(IT27956: SYSSESSIONS OCCASIONALLY NOT RETURNING CURRENT SESSION)
보통 내용이 상세하게 설명되지 않은 경우가 많은데, 결함 내용을 재현하기 위한 프로그램 코드도 공개되어 있네요.
코드 또한 인포믹스를 사용하는 고객에게서 제공되었다고 하네요.
우선 에러에 대한 설명입니다.
Error description
Customers are facing again the problem of missing sessions in sysmaster:syssessions (as reported in defect idsdb00096417) in IDS 12.10.FC12W1. The defect idsdb00096417 should be fixed in IDS 12.10.FC11. However I am able to reproduce the issue in 12.10.FC10, 12.10.FC11, 12.10.FC12 and 12.10.FC12W1 using the following reproducing scenario (provided by the customer).
고객사에서 사용중인 인포믹스 버전은 12.10이고 Fix level 까지는 정확히 알 수가 없네요.
다만 내용에서 유추하건데 12.10.FC10 버전에서 위의 현상이 최초로 발견된 것으로 보이고,
12.10.FC12W1 버전에서도 동일하게 재현된다고 하니 2019년 2월 11일 현재까지는 결함이 수정된 버전은 없는 상태입니다.
아래는 재현 시나리오에서 사용한 ESQL/C 코드와 쉘스크립트 내용입니다.
============== test_ec.ec ==============
#include <stdio.h>
$int c, sid;
main()
{
$database stores_demo;
$select DBINFO('sessionid') INTO :sid FROM sysmaster:sysdual;
$select COUNT(*) INTO :c FROM sysmaster:syssessions s WHERE
s.sid = :sid;
if ( c == 0 )
printf("SID: %d Count: %d\n",sid,c);
sleep(1);
}
===================================
============== test_ec_connections.sh ======
#!/bin/bash
LOOP_MAX=$1
while true
do
LOOP=1
while [ $LOOP -le $LOOP_MAX ]
do
./test_ec.exe &
LOOP=`expr $LOOP + 1`
done
sleep 2
date
done
===================================
$ esql -o test_ec.exe test_ec.ec
먼저 test_ec.ec 코드 내용을 살펴보겠습니다.
1. 인포믹스의 stores_demo에 접속
2. 접속한 현재 자신의 세션번호 확인
3. sysmaster:syssessions 테이블에서 자신의 세션번호 갯수 확인
>> 자신의 세션번호 갯수가 0개이면 메시지 출력
너무나 당연하게도 3번에서는 접속이 유지된 상태에서 자신의 세션번호 개수를 확인하는 것이니 1개입니다.
그런데 0개가 나오는 경우가 있다는 건데요.
여기서 이어지는 쉘 스크립트에서는 컴파일된 test_ec 프로그램을 동시에 여러개 실행하는 모양새가 됩니다.
우선은 아래 환경에서 위와 동일한 프로그램으로 테스트를 해봤습니다.
시스템 환경은 아래와 같습니다.
O/S : AIX 6.1
DBMS : Informix 11.50.FC9W3 / 11.70.FC9 / 12.10.FC6WE / 12.10.FC8WE / 12.10.FC12W1WE
문제가 보고된 12.10.FC12 버전에서 실행한 결과입니다.
$ onstat -
IBM Informix Dynamic Server Version 12.10.FC12W1WE -- On-Line -- Up 00:26:56 -- 234320 Kbytes
$ ./test_ec_connetions.sh 10
Mon Feb 11 23:24:22 KORST 2019
...
Mon Feb 11 23:24:47 KORST 2019
Mon Feb 11 23:24:50 KORST 2019
SID: 6081 Count: 0
Mon Feb 11 23:24:52 KORST 2019
SID: 6091 Count: 0
Mon Feb 11 23:24:54 KORST 2019
SID: 6100 Count: 0
Mon Feb 11 23:24:56 KORST 2019
SID: 6111 Count: 0
Mon Feb 11 23:24:58 KORST 2019
SID: 6120 Count: 0
Mon Feb 11 23:25:00 KORST 2019
SID: 6131 Count: 0
Mon Feb 11 23:25:02 KORST 2019
SID: 6140 Count: 0
Mon Feb 11 23:25:04 KORST 2019
SID: 6151 Count: 0
Mon Feb 11 23:25:06 KORST 2019
SID: 6160 Count: 0
Mon Feb 11 23:25:09 KORST 2019
SID: 6171 Count: 0
Mon Feb 11 23:25:11 KORST 2019
Mon Feb 11 23:25:13 KORST 2019
Mon Feb 11 23:25:15 KORST 2019
Mon Feb 11 23:25:17 KORST 2019
Mon Feb 11 23:25:19 KORST 2019
Mon Feb 11 23:25:21 KORST 2019
지속적으로 발생하지 않고 간혹 발생하는데요. 특정 세션 번호만 누락되는 것인지 해서
아래 조건 절을 생략하고 확인해 봤습니다.
$select DBINFO('sessionid') INTO :sid FROM sysmaster:sysdual;
$select COUNT(*) INTO :c FROM sysmaster:syssessions s WHERE
s.sid = :sid;
if ( c == 0 ) << 제거한 내용
printf("SID: %d Count: %d\n",sid,c);
$ ./test_ec_connetions.sh 10
SID: 6278 Count: 1
SID: 6279 Count: 1
SID: 6280 Count: 1
SID: 6281 Count: 1
SID: 6282 Count: 1
SID: 6283 Count: 1
SID: 6285 Count: 1
SID: 6284 Count: 1
SID: 6286 Count: 1
SID: 6287 Count: 1
Mon Feb 11 23:32:34 KORST 2019
SID: 6288 Count: 1
SID: 6289 Count: 1
SID: 6291 Count: 0 << 간혹 개수가 확인되지 않는 세션이 존재합니다.
SID: 6290 Count: 1
SID: 6292 Count: 1
SID: 6293 Count: 1
SID: 6294 Count: 1
SID: 6295 Count: 1
SID: 6296 Count: 1
SID: 6297 Count: 1
Mon Feb 11 23:32:36 KORST 2019
SID: 6298 Count: 1
SID: 6299 Count: 1
SID: 6300 Count: 0
SID: 6301 Count: 1
SID: 6302 Count: 1
SID: 6303 Count: 1
SID: 6304 Count: 1
SID: 6305 Count: 1
SID: 6306 Count: 1
SID: 6307 Count: 1
Mon Feb 11 23:32:38 KORST 2019
SID: 6308 Count: 1
SID: 6310 Count: 1
SID: 6309 Count: 1
SID: 6311 Count: 1
SID: 6312 Count: 1
SID: 6313 Count: 1
SID: 6314 Count: 1
SID: 6315 Count: 1
SID: 6316 Count: 1
다른 버전인 11.50과 11.70에서는 재현이 되지 않았습니다.
아직 해당 APAR인 IT27956이 OPEN 상태이므로 곧 해결된 버전이 나오지 않을까 기대해봅니다.
https://www-01.ibm.com/support/entdocview.wss?uid=swg1IT27956
- Total
- Today
- Yesterday