写数据的任务执行失败,告警:leader_revoke revoke reason="clog sliding_window timeout"

【 使用环境 】测试环境
【 OB or 其他组件 】
ob 3.1.4
ocp 3.3.0
【 使用版本 】
【问题描述】持续向ob写数据的任务执行失败,失败时看到ocp告警leader_revoke revoke reason=“clog sliding_window timeout”
【复现路径】
这个问题还是之前问题的一个继续,我们将现场数据导入ob做测试,之前总是在合并期间报错,调整了一些参数,现在不会了,但是还是有问题。
我又测试了执行几次,每次大概持续5到8天,还是会报错,最近的一次测试报错时间为:12-31 16:34,任务程序报错如下:

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [REPLACE INTO `HIS_08003_2022` (`UPDATE_TIME`,`POINT_ID`,`UPLOAD_TIME`,`VAL`,`QUALITY_TYPE`,`VALID_RANGE`,`ZERO_DRIFT`) VALUES (?,?,?,?,?,?,?)]; SQL state [HY000]; error code [4012]; Timeout; nested exception is java.sql.BatchUpdateException: Timeout
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:649)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:662)
	at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:950)

ocp看到这个时间点有一个告警,产生时间2022年12月31日 16:33:01 恢复时间 2022年12月31日 16:38:05
告警信息内容如下:

[OB日志告警] 集群=obcluster, 机器=xx.xx.53.26,日志类型=election 错误码=-1, 错误名称=ERROR, 错误详情=[2022-12-31 16:32:43.112435] ERROR [ELECT] leader_revoke (ob_election.cpp:2151) [42767][1849][Y0-0000000000000000] [lt=13] [dc=0] leader_revoke, please attention!(revoke reason=“clog sliding_window timeout”, election={partition:{tid:1102810162659554, partition_id:0, part_cnt:0}, is_running:true, is_changing_leader:false, self:“xx.xx.53.26:2882”, proposal_leader:“0.0.0.0”, cur_leader:“xx.xx.53.26:2882”, curr_candidates:3{server:“xx.xx.53.25:2882”, timestamp:1665827790197548, flag:0}{server:“xx.xx.53.26:2882”, timestamp:1665827790197548, flag:0}{server:“xx.xx.53.27:2882”, timestamp:1665827790197548, flag:0}, curr_membership_version:1670586854717286, leader_lease:[1670587119700000, 1670587129900000], election_time_offset:4300000, active_timestamp:1670586737535981, T1_timestamp:1670587115400000, leader_epoch:1670587109800000, state:1, role:1, stage:1, type:-1, replica_num:3, unconfirmed_leader:“xx.xx.53.26:2882”, unconfirmed_leader_lease:[1670587119700000, 1670587130500000], takeover_t1_timestamp:1670587115400000, is_need_query:false, valid_candidates:2{server:“xx.xx.53.25:2882”, timestamp:-1, flag:0}{server:“xx.xx.53.26:2882”, timestamp:-1, flag:0}, change_leader_timestamp:0, ignore_log:false, leader_revoke_timestamp:1670586737535981, vote_period:4, lease_time:9800000, move_out_timestamp:1670587113403247, eg_part_array_idx:20, eg_id_hash:17943849247564021986}) BACKTRACE:0x9a9c04e 0x982e971 0x22e512f 0x22e4d7b 0x22e4b42 0x7a9c288 0x7a24e94 0x777b71c 0x7777c32 0x77be7a4 0x7412fb4 0x8a79bb7 0x23ae7b4 0x23e2fe2 0x9a59d05 0x9a586f2 0x981f40f
【问题现象及影响】

【附件】

这个报错是Leader同步Clog超时导致切主了,可以尝试调小客户端压力,或者调大 _ob_clog_timeout_to_force_switch_leader,这是日志同步超时配置项,默认10秒,可适当调大,影响是leader异常时,相应的RTO也会变长。

这个参数是发生变更了吗,我在ocp和官方文档里都没找到这个参数

可以看下这个文档:https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000075?back=kb

这个配置项修改后可以在oceanbase.__all_sys_parameter里查到

改了以后不需要重启吧?已经改了,我再跑一下试试过几天过来反馈

程序运行十七天报错

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [REPLACE INTO `HIS_08003_2022` (`UPDATE_TIME`,`POINT_ID`,`UPLOAD_TIME`,`VAL`,`QUALITY_TYPE`,`VALID_RANGE`,`ZERO_DRIFT`) VALUES (?,?,?,?,?,?,?)]; SQL state [HY000]; error code [4012]; Timeout; nested exception is java.sql.BatchUpdateException: Timeout
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:649)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:662)
	at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:950)

产生时间大约为2023-01-24 02:17

告警详情:
产生时间:2023年1月24日 02:03:46 恢复时间:2023年1月24日 02:12:55
集群:obcluster,租户:dora,主机:xx.xx.xx.25(zone:zone1),告警:OB租户存在长时间未释放的memtable,最长时间为 10 分 12.32 秒,超过阈值 600 秒。

修改配置

freeze_trigger_percentage 35 --> 20

重新执行任务