【问题描述】
EsgynDB(Trafodion)数据库中做批量删除时,执行2小时后提示:java.io.IOException: delete late checkin for transaction xxx,详细信息如下
>>delete from test_delete where a>100; *** WARNING[6008] Statistics for column (A) from table TRAFODION.SEABASE.TEST_DELETE were not available. As a result, the access path chosen might not be the best possible. *** ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface::deleteRow returned error HBASE_ACCESS_ERROR(-706). Cause: java.io.IOException: java.io.IOException: delete late checkin for transaction 72339069014678765 in region TRAF_RSRVD_3:TRAFODION.SEABASE.TEST_DELETE,,1581140570266.daff73ed901f4045f4ae996db16dd5ef.,skey=null,ekey=null org.apache.hadoop.hbase.client.transactional.TransactionalTable.delete(TransactionalTable.java:757) org.apache.hadoop.hbase.client.transactional.RMInterface.delete(RMInterface.java:937) org.trafodion.sql.HTableClient.deleteRow(HTableClient.java:1604) org.trafodion.sql.HBaseClient.deleteRow(HBaseClient.java:2392). --- 0 row(s) deleted.
【问题原因】
通过get statistics查看到语句执行的运行时统计信息,通过“Execute Elapsed Time 2:00:00.613830”,看delete语句是执行2小时报错。详细统计信息如下:
>>get statistics for qid current default; Qid MXID11000016667212447900982995646000000000206U3333302T000_335___SQLCI_DML_LAST__ Compile Start Time 2020/02/08 14:11:01.268632 Compile End Time 2020/02/08 14:11:01.279867 Compile Elapsed Time 0:00:00.011235 Execute Start Time 2020/02/08 14:11:01.280240 Execute End Time 2020/02/08 16:11:01.894070 Execute Elapsed Time 2:00:00.613830 State DEALLOCATED Rows Affected 184,938 SQL Error Code -8448 Stats Error Code 0 Query Type SQL_DELETE_NON_UNIQUE Sub Query Type SQL_STMT_NA Estimated Accessed Rows 0 Estimated Used Rows 0 Parent Qid NONE Parent Query System NONE Child Qid NONE Number of SQL Processes 1 Number of Cpus 1 Transaction Id 72339069014678765 Source String delete from test_delete where a>100; SQL Source Length 36 Rows Returned 0 First Row Returned Time -1 Last Error before AQR 0 Number of AQR retries 0 Delay before AQR 0 No. of times reclaimed 0 Cancel Time -1 Last Suspend Time -1 Query hash 0 SLA Name defaultSLA Profile Name defaultProfile No. of times executed 1 Min. Execute Time 7,200.613830 secs Max. Execute Time 7,200.613830 secs Avg. Execute Time 7,200.613888 secs Stats Collection Type OPERATOR_STATS LC RC Id PaId ExId Frag TDBName DOP Dispatches OperCPUTime EstRowsUsed ActRowsUsed ActDataUsed Details 5 . 6 . 0 0 EX_ROOT 1 2 8 0 0 0 72297143|0|0|11333| 3 4 5 6 0 0 EX_ONLJ 1 366 22,537 1.19382e+06 0 0 . . 4 5 0 0 EX_TRAF_VSBB_DELETE 1 181 166,885 1 183,118 0 TRAF_RSRVD_3:TRAFODION.SEABASE.IDX_TEST_DELETE|10496397|7195172250|0| 1 2 3 5 0 0 EX_ONLJ 1 368 49,313 1.19382e+06 184,938 10,726,404 . . 2 3 0 0 EX_TRAF_DELETE 1 182 71,645,451 1 184,938 10,726,404 TRAF_RSRVD_3:TRAFODION.SEABASE.TEST_DELETE|20713164|7166976921|0| . . 1 3 0 0 EX_TRAF_SELECT 1 182 412,949 1.19382e+06 186,188 10,798,904 TRAF_RSRVD_3:TRAFODION.SEABASE.TEST_DELETE|20108412|112207|186368| --- SQL operation complete.
Trafodion数据库中,事务有一个默认的超时机制,超时时间为2小时。即如果大事务执行时间超过2小时未结束,则事务将自动退出并回滚,在大事务执行时, 可以通过修改配置来增加事务的超时时间。
【问题解决】
修改方法为在HBase高级配置选项中添加hbase.transaction.lease.timeout;
该值的默认值是2小时,即7200000(毫秒),对于大事务可以设置问20小时,即 72000000(毫秒);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69985104/viewspace-2727065/ ,如需转载,请注明出处,否则将追究法律责任。