没人遇到这种问题吗?
Yang Peng <
[hidden email]> 于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就会复现,大家有遇到过这种问题吗?
>