I did not see a reason to rename `all()` to `range()`. `all()` does not
take any parameters to limit a range and is a good name IMHO. But I am
not married to keep `all()` and if we think we should rename it, too, I
am fine with it.

Not sure what connection you make to metrics though. Can you elaborate?


Would be interested to hear others opinions on this, too.


-Matthias

On 4/11/19 8:38 AM, Guozhang Wang wrote:
> I like the renaming, since it also aligns with our metrics cleanup
> (KIP-444) which touches upon the store level metrics as well.
> 
> One question: you seems still suggesting to keep "all" with the current
> name (and also using a separate metric for it), what's the difference
> between this one and other "range" functions?
> 
> 
> Guozhang
> 
> On Thu, Apr 11, 2019 at 2:26 AM Matthias J. Sax <matth...@confluent.io>
> wrote:
> 
>> Thanks for the input.
>>
>>>> Just to clarify the naming conflicts is between the newly added function
>>>> and the old functions that we want to deprecate / remove right? The
>>
>> Yes, the conflict is just fort the existing `fetch()` methods for which
>> we want to change the return type.
>>
>> IMHO, we should not make a breaking change in a minor release. Thus, we
>> could either only deprecate those fetch methods that return
>> `WindowStoreIterator` and do a "clean cut" in 3.0.
>>
>> Or we, follow the renaming path. No get a clean renaming, we need to
>> consider all methods that are called "fetch":
>>
>> ReadOnlyWindowStore:
>>
>>> V fetch(K, long)
>>> WindowStoreIterator<V> fetch(K, Instant, Instant)
>>> KeyValueIterator<Windowed<K>, V> fetch(K, K, Instant, Instant)
>>
>> WindowStore:
>>
>>> WindowStoreIterator<V> fetch(K, long, long)
>>> WindowStoreIterator<V> fetch(K, Instant, Instant)>
>> KeyValueIterator<Windowed<K>, V> fetch(K, K, long, long)
>>> KeyValueIterator<Windowed<K>, V> fetch(K, K, Instant, Instant)
>>
>> There is also fetchAll(long, long) and fetchAll(Instant, Instant) that
>> fetch over all keys.
>>
>> Maybe we could rename `V fetch(K, long)` to `V get(K, long)` and rename
>> all `fetch()/fetchAll()` to `range()`? There is actually no reason to
>> have range()/rangeAll().
>>
>> If we do this, we might consider to rename methods for SessionStore,
>> too. There is
>>
>>> ReadOnlySessionStore#fetch(K)
>>> ReadOnlySessionStore#fetch(K, K)
>>> SessionStore#findSessions(K, long, long)
>>> SessionStore#findSessions(K, K, long, long)
>>> SessionStore#fetchSession(K, long, long);
>>
>> Consistent renaming might be:
>>
>> ReadOnlySessionStore#range(K)
>> ReadOnlySessionStore#range(K, K)
>> SessionStore#range(K, long, long)
>> SessionStore#range(K, K, long, long)
>> SessionStore#get(K, long, long);
>>
>>
>> Not sure if extensive renaming might have too big of an impact. However,
>> `range()` and `get()` might actually be better names than `fetch()`,
>> thus, it might also provide some additional value.
>>
>> Thoughts?
>>
>>
>> -Matthias
>>
>>
>> On 3/27/19 10:19 AM, Guozhang Wang wrote:
>>> Hello Matthias,
>>>
>>> Just to clarify the naming conflicts is between the newly added function
>>> and the old functions that we want to deprecate / remove right? The
>>> existing ones have different signatures with parameters so that they
>> should
>>> not have conflicts.
>>>
>>> I was thinking about just make the change directly without deprecating
>>> existing ones which would require users of 2.3 to make code changes --
>> this
>>> code change looks reasonably straight-forward to me and not much worth
>>> deferring to later when the deprecated ones are removed.
>>>
>>> On the other hand, just deprecating "WindowIterator" without add new
>>> functions seems not very useful for users either since it is only used as
>>> an indicator but users cannot make code changes during this phase
>> anyways,
>>> so it is still a `one-cut` deal when we eventually remove the deprecated
>>> ones and add the new one.
>>>
>>> Hence I'm slightly inclining to trade compatibility and replace it with
>> new
>>> functions in one release, but if people have a good idea of the renaming
>>> approach (I do not have a good one on top of my head :) I can also be
>>> convinced that way.
>>>
>>> Guozhang
>>>
>>>
>>> On Mon, Mar 11, 2019 at 10:41 AM Matthias J. Sax <matth...@confluent.io>
>>> wrote:
>>>
>>>> I am open to change the return type to
>>>>
>>>> KeyValueIterator<Windowed<K>, V>
>>>>
>>>> However, this requires to rename
>>>>
>>>> #fetch(K key, long startTimestamp, long endTimestamp)
>>>> #fetch(K key, Instant startTimestamp, Instant endTimestamp)
>>>>
>>>> to avoid naming conflicts.
>>>>
>>>> What new name would you suggest? The existing methods are called
>>>> `fetch()`, `fetchAll()`, `all()`, `put()`.
>>>>
>>>> While I think it would be good to get fully aligned return types, I am
>>>> not sure how we can get aligned method names (without renaming all of
>>>> them...)? If we think it's worth to rename all to get this cleaned up, I
>>>> am no opposed.
>>>>
>>>>
>>>> Thoughts?
>>>>
>>>>
>>>> -Matthias
>>>>
>>>>
>>>> On 3/11/19 10:27 AM, Guozhang Wang wrote:
>>>>> I was thinking about changing the return type even, to
>>>>> `KeyValueIterator<Windowed<K>, V>` since it is confusing to users about
>>>> the
>>>>> key typed `Long` (Streams javadoc today did not explain it clearly
>>>> either),
>>>>> note it is not backward compatible at all.
>>>>>
>>>>> Personally I'd prefer to just deprecate the API and new new ones that
>>>>> return `KeyValueIterator<Windowed<K>, V>` directly, but if most people
>>>> felt
>>>>> it is too intrusive for compatibility I can be convinced with
>>>>> `KeyValueIterator<Long, V>` as well.
>>>>>
>>>>> Guozhang
>>>>>
>>>>> On Mon, Mar 11, 2019 at 10:17 AM Sophie Blee-Goldman <
>>>> sop...@confluent.io>
>>>>> wrote:
>>>>>
>>>>>> I remember thinking this while working on window stores, am definitely
>>>> for
>>>>>> it.
>>>>>>
>>>>>> On Mon, Mar 11, 2019 at 9:20 AM John Roesler <j...@confluent.io>
>> wrote:
>>>>>>
>>>>>>> Sounds great to me. Thanks, Matthias!
>>>>>>> -John
>>>>>>>
>>>>>>> On Sun, Mar 10, 2019 at 11:58 PM Matthias J. Sax <
>>>> matth...@confluent.io>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I would like to propose KIP-439 to deprecate interface
>>>>>>>> `WindowStoreIterator`.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-439%3A+Deprecate+Interface+WindowStoreIterator
>>>>>>>>
>>>>>>>> Looking forward to your feedback.
>>>>>>>>
>>>>>>>>
>>>>>>>> -Matthias
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to