Thanks for the KIP, Jorge! Sorry it took me so long. I just reviewed the KIP, and it looks good to me.
Thanks, John On Tue, Sep 1, 2020, at 12:35, Jorge Esteban Quilcate Otoya wrote: > Thanks Sophie! > > > one nit: you missed updating the startTime long to Instant in both > appearances of the fetchSession(key, startTime, sessionEndTime) method. > > Agreed. I'm fixing this on the KIP. > > > Also, I think by "startTime" you actually meant "earliestSessionEndTime". > > Given the implementation usage of these variables, I think it refers to > session start and end time, e.g. in `InMemorySessionStore`: > > ``` > public byte[] fetchSession(final Bytes key, final long startTime, final > long endTime) { > removeExpiredSegments(); > > Objects.requireNonNull(key, "key cannot be null"); > > // Only need to search if the record hasn't expired yet > if (endTime > observedStreamTime - retentionPeriod) { > final ConcurrentNavigableMap<Bytes, > ConcurrentNavigableMap<Long, byte[]>> keyMap = endTimeMap.get(endTime); > if (keyMap != null) { > final ConcurrentNavigableMap<Long, byte[]> startTimeMap = > keyMap.get(key); > if (startTimeMap != null) { > return startTimeMap.get(startTime); > } > } > } > return null; > } > ``` > > > One question I do have is whether we really need to provide a default > implementation > > that throws UnsupportedOperationException? Actually I'm wondering if we > shouldn't > > do something similar to the WindowStore methods, and provide a default > implementation > > on the SessionStore interface which then just calls the corresponding > long-based method. > > I'll be happy with this approach. I was trying to align it with the > approach we followed on KIP-617, but you're right in the case of > WindowStore we didn't add default implementations. I'll update the KIP > accordingly and wait for more feedback. > > Cheers, > Jorge. > > > > On Tue, Sep 1, 2020 at 4:51 AM Sophie Blee-Goldman <sop...@confluent.io> > wrote: > > > Thanks for bringing the IQ API into alignment -- the proposal looks good, > > although > > one nit: you missed updating the startTime long to Instant in both > > appearances of > > the fetchSession(key, startTime, sessionEndTime) method. Also, I think by > > "startTime" > > you actually meant "earliestSessionEndTime". > > > > One question I do have is whether we really need to provide a default > > implementation > > that throws UnsupportedOperationException? Actually I'm wondering if we > > shouldn't > > do something similar to the WindowStore methods, and provide a default > > implementation > > on the SessionStore interface which then just calls the corresponding > > long-based method. > > WDYT? > > > > -Sophie > > > > On Fri, Aug 28, 2020 at 11:31 AM Jorge Esteban Quilcate Otoya < > > quilcate.jo...@gmail.com> wrote: > > > > > Hi everyone, > > > > > > I'd like to discuss the following proposal to align IQ Session Store API > > > with the Window Store one. > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-666%3A+Add+Instant-based+methods+to+ReadOnlySessionStore > > > > > > Looking forward to your feedback. > > > > > > Cheers, > > > Jorge. > > > > > >