현상
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 내에서 메시지를 발송하는 로직은 불필요하다고 판단되어 제거됐습니다.