기술 정보
home
채널 소개
home

Internal Error with condition '!CUR_THREAD.ti_disable_throw' 발생

문서 유형
장애 해결
분야
패치/업그레이드
키워드
DBLINK
InternalError
적용 제품 버전
7FS01
7FS02
1 more property

현상

Tibero DB에서 발생하는 현상으로, dblink session의 connection이 끊기면서 자원 정리중 ‘Internal Error with condition '!CUR_THREAD.ti_disable_throw' 가 발생합니다.
--현상 발생 버전 : tibero7 fs02 [sys.log] [2024-01-15T17:19:42.860339] [COM-728] [I] Internal Error with condition '!CUR_THREAD.ti_disable_throw' (1 args) (tbsvr_err.h:90:tb_throw) (pid=367791, sessid=728, tid=728) [2024-01-15T17:23:13.906583] [COM-774] [I] Internal Error with condition '!CUR_THREAD.ti_disable_throw' (1 args) (tbsvr_err.h:90:tb_throw) (pid=367796, sessid=774, tid=774) [callstack 파일 일부] #0 0x00007f906098f918 in nanosleep () from /lib64/libc.so.6 #1 0x00007f90609bd178 in usleep () from /lib64/libc.so.6 #2 0x0000000000eded6f in callstack_dump_ex (ds=0xa2c64c0 <debug_dstream>, tid=728, tid@entry=-1, dump_dest_dir=dump_dest_dir@entry=0x0) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/frame/callstack.c:468 #3 0x0000000000edd167 in tb_tracedump (tracedump_cause=tracedump_cause@entry=TRACEDUMP_ASSERT) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/frame/tbsvr_tracedump.c:90 #4 0x0000000000f25914 in tb_assert_msg_detail (cond=cond@entry=0x2c065a5 "!CUR_THREAD.ti_disable_throw", argc=argc@entry=1, filename=filename@entry=0x2c03a9e "tbsvr_err.h", line=line@entry=90, func=func@entry=0x2c072e0 <__func__.74200> "tb_throw") at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/frame/tb_assert.c:115 #5 0x00000000007f839a in tb_throw (ec=ec@entry=-12126, file=file@entry=0x2c09275 "tbsvr_dblink.c", line=line@entry=822, func=func@entry=0x2c09100 <__func__.107797> "tbsvr_dblink_send_msg", notrace=notrace@entry=0 '\000') at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/include/tbsvr_err.h:90 #6 0x00000000007f94e6 in tb_err_and_jmp (file=file@entry=0x2c09275 "tbsvr_dblink.c", line=line@entry=822, func=func@entry=0x2c09100 <__func__.107797> "tbsvr_dblink_send_msg", notrace=notrace@entry=0 '\000', from_sighdlr=from_sighdlr@entry=0 '\000', ec=ec@entry=-12126) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/common/tbsvr_err.c:158 #7 0x000000000080dd93 in tbsvr_dblink_send_msg (dblink=dblink@entry=0x7f7517bc6408, msg=msg@entry=0x7f1347ff68a0) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/dblink/tbsvr_dblink.c:820 #8 0x000000000080ecee in tbsvr_dblink_close_all_conn (flag=flag@entry=0 '\000') at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/dblink/tbsvr_dblink.c:612 #9 0x0000000000eb5380 in so_txinfo_cleanup (so=<optimized out>, sessid=<optimized out>, flag=<optimized out>) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/frame/so_registry.c:249 #10 0x0000000000eb2a55 in so_cleanup_after (id=728, so_list=0x7f136b630380, marker=0x7f744dc66810) at /home/chef/workspace/Build_centos_8/tibero7/src/tbsvr/frame/so_cleanup.c:60
SQL
복사

원인

db link 관련 함수에서 target DB와의 connection이 비정상적인 경우, Internal Error 가 발생됩니다.
dblink session을 일괄적으로 정리하는 함수인 ’tbsvr_dblink_close_all_conn’ 가 db link의 target DB에 메시지 발송: 해당 로직에서 target DB의 connection 이 비정상적일 시 throw를 발생시켜 db 내부 Internal Error 발생

해결

db link session 관련하여 불필요한 로직이 제거된, 패치를 적용해 해결합니다. (적용 패치: 317099a)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
참고
적용 패치: tbsvr_dblink_close_all_conn 내 메시지 발송 로직 제거 사유
하위 함수에서 이미 메시지를 발송하고 있고, 이 상황에 대해 Internal Error를 유발할 수 있는 ti_disable_throw 예외 처리가 이미 되어 있으므로 tbsvr_dblink_close_all_conn 내에서 메시지를 발송하는 로직은 불필요하다고 판단되어 제거됐습니다.