So my TTL config is like:

StateTtlConfig.newBuilder(Duration.ofHours(1))
    .setUpdateType(StateTtlConfig.UpdateType.OnReadAndWrite)
    
.setStateVisibility(StateTtlConfig.StateVisibility.ReturnExpiredIfNotCleanedUp)
    .build();


Issue is that if every time I use ListState.update it would be an expensive
process to update the entire list of hashes everytime.

I can use Map State but how can I control the size of this map state to not
grow beyond a certain point ?

Use case is that for a given key we get data every few seconds. Each data
has a unique hash associated with it.

We want to check if a certain hash is in the state, it should not process
that data again.
At the same time old hashes expire beyond a certain ttl, so that the hashes
state don't grow beyond a size.

I believe even with map state I have to expire the entire map and there is
no way to set ttl for individual keys in the map.

Please let me know if there is a better way to do this.

Thanks
Sachin





On Fri, May 30, 2025 at 9:32 AM Zakelly Lan <zakelly....@gmail.com> wrote:

> Hi Sachin,
>
> I assume you are using the rocksdb state backend. The TTL for ListState is
> applied for each list entry, if you are using `ListState.add`. However if
> you do ListState.update, the entire list is rewrite so the ttl is updated.
> Could you share your use case and the ttl config?
> Another suggestion is to use the Map State, thus you could manipulate each
> entry freely without rewriting the entire list.
>
>
> Best,
> Zakelly
>
> On Fri, May 30, 2025 at 12:22 AM Sachin Mittal <sjmit...@gmail.com> wrote:
>
>> Hi,
>> I think ttl would be applied for the entire list,
>> I would like the ListState to restrict the entries by size and
>> automatically purge older added entries as new ones get added.
>> Something similar to a bounded list.
>>
>> Thanks
>> Sachin
>>
>>
>> On Thu, May 29, 2025 at 6:51 PM Sigalit Eliazov <e.siga...@gmail.com>
>> wrote:
>>
>>> hi,
>>> i think you can achieve this by using  StateTtlConfig to define the
>>> ttl, and add ListStateDescriptor to the ListState definition.
>>>
>>> thanks,
>>> Sigalit
>>>
>>>
>>>
>>> On Thu, May 29, 2025 at 11:53 AM Sachin Mittal <sjmit...@gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>> I am adding some hashes of my elements in my list date to check for
>>>> dedups.
>>>>
>>>> Now to not have an infinte growing list, I would like to limit the size
>>>> of hashes in that list to say a number or just add some TTL config which
>>>> would expire the entries in the list beyond certain time.
>>>>
>>>> Is this something possible using Flink constructs.
>>>>
>>>> If not, is there any way I can achieve this ?
>>>>
>>>> Thanks
>>>> Sachin
>>>>
>>>>

Reply via email to