没人遇到这种问题吗? Yang Peng <yangpengklf...@gmail.com> 于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<String, Integer> 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就会复现,大家有遇到过这种问题吗? >