+user@flink.apache.org <user@flink.apache.org>

On Wed, 4 Jun, 2025, 9:41 am Owais Ansari, <owaisansari1...@gmail.com>
wrote:

> It expires the individual key and not the entire state. For your use case
> Map state is a good option.
>
> On Wed, 4 Jun, 2025, 8:26 am Sachin Mittal, <sjmit...@gmail.com> wrote:
>
>> 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