Re: Flink1.9设置TTL不生效
没人遇到这种问题吗? Yang Peng 于2020年12月3日周四 下午8:49写道: > Hi,咨询一个问题 我们生产环境使用flink1.9版本,使用的statebackend为RocksDB,具体代码设置如下: > > private static final String EV_STATE_FLAG = "EV_EID_FLAG"; > > StateTtlConfig ttlConfig = StateTtlConfig > .newBuilder(Time.minutes(60)) > .updateTtlOnCreateAndWrite() > .neverReturnExpired() > .cleanupInRocksdbCompactFilter(1000) > .build(); > MapStateDescriptor eidMapStateDesc = new > MapStateDescriptor<>( EV_STATE_FLAG , BasicTypeInfo.STRING_TYPE_INFO, > BasicTypeInfo.INT_TYPE_INFO); > eidMapStateDesc.enableTimeToLive(ttlConfig); > eidMapState = getRuntimeContext().getMapState(eidMapStateDesc); > > 设置TTL过期时间为60mins > 但是目前已经运行了一天了,通过rocksdb监控我们查看EV_STATE_FLAG这个名称的SST文件一直在增加没有降低的趋势,我们从TM日志发现如下信息: > WARN org.rocksdb.FlinkCompactionFilter - Cannot configure RocksDB TTL > compaction filter for state < EV_EID_FLAG >: feature is disabled for the > state backend. > 但是我们在添加完 state.backend.rocksdb.ttl.compaction.filter.enabled: > true这个参数重启任务之后上述warn > 信息就会消失,但是任务运行一段时间后就会执行cp失败,我们查看jstack发现执行cp失败是卡在了获取state数据的代码位置,去掉这个参数之后任务就会恢复,但是TTL > 配置不生效这个warn就会复现,大家有遇到过这种问题吗? >
Flink1.9设置TTL不生效
Hi,咨询一个问题 我们生产环境使用flink1.9版本,使用的statebackend为RocksDB,具体代码设置如下: private static final String EV_STATE_FLAG = "EV_EID_FLAG"; StateTtlConfig ttlConfig = StateTtlConfig .newBuilder(Time.minutes(60)) .updateTtlOnCreateAndWrite() .neverReturnExpired() .cleanupInRocksdbCompactFilter(1000) .build(); MapStateDescriptor eidMapStateDesc = new MapStateDescriptor<>( EV_STATE_FLAG , BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.INT_TYPE_INFO); eidMapStateDesc.enableTimeToLive(ttlConfig); eidMapState = getRuntimeContext().getMapState(eidMapStateDesc); 设置TTL过期时间为60mins 但是目前已经运行了一天了,通过rocksdb监控我们查看EV_STATE_FLAG这个名称的SST文件一直在增加没有降低的趋势,我们从TM日志发现如下信息: WARN org.rocksdb.FlinkCompactionFilter - Cannot configure RocksDB TTL compaction filter for state < EV_EID_FLAG >: feature is disabled for the state backend. 但是我们在添加完 state.backend.rocksdb.ttl.compaction.filter.enabled: true这个参数重启任务之后上述warn 信息就会消失,但是任务运行一段时间后就会执行cp失败,我们查看jstack发现执行cp失败是卡在了获取state数据的代码位置,去掉这个参数之后任务就会恢复,但是TTL 配置不生效这个warn就会复现,大家有遇到过这种问题吗?
Flink1.9设置TTL不生效
Hi,咨询一个问题 我们生产环境使用flink1.9版本,使用的statebackend为RocksDB,具体代码设置如下: private static final String EV_STATE_FLAG = "EV_EID_FLAG"; StateTtlConfig ttlConfig = StateTtlConfig .newBuilder(Time.minutes(60)) .updateTtlOnCreateAndWrite() .neverReturnExpired() .cleanupInRocksdbCompactFilter(1000) .build(); MapStateDescriptor eidMapStateDesc = new MapStateDescriptor<>( EV_STATE_FLAG , BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.INT_TYPE_INFO); eidMapStateDesc.enableTimeToLive(ttlConfig); eidMapState = getRuntimeContext().getMapState(eidMapStateDesc); 设置TTL过期时间为60mins 但是目前已经运行了一天了,通过rocksdb监控我们查看EV_STATE_FLAG这个名称的SST文件一直在增加没有降低的趋势,我们从TM日志发现如下信息: WARN org.rocksdb.FlinkCompactionFilter - Cannot configure RocksDB TTL compaction filter for state < EV_EID_FLAG >: feature is disabled for the state backend. 但是我们在添加完 state.backend.rocksdb.ttl.compaction.filter.enabled: true这个参数重启任务之后上述warn 信息就会消失,但是任务运行一段时间后就会执行cp失败,我们查看jstack发现执行cp失败是卡在了获取state数据的代码位置,去掉这个参数之后任务就会恢复,但是TTL 配置不生效这个warn就会复现,大家有遇到过这种问题吗?