Hi, 1. I don't think we can/should break backwards compatibility. 2. Have you considered using `BiFunction<K,V,KO> foreignKeyExtractor` ? This should work without renaming the method. 3. I don't see the benefit of deprecating it. I agree, we wouldn't add both overloads normally, but the value-only overload is useful / correct as it is, I wouldn't break users code just to "clean" things very slighly.
Cheers, Lucas On Mon, Nov 11, 2024 at 6:43 PM Chu Cheng Li <peterx...@gmail.com> wrote: > > Hi all, > > I'm working on enhancing the KTable foreign key join API to allow > extracting foreign keys from both key and value. However, I've encountered > a Java type erasure issue that affects our API design choices. > > Current Situation: > - We want to allow foreign key extraction from both key and value > - We'd like to maintain backward compatibility with existing value-only > extractors > - Initial attempt was to use method overloading > > The Issue: > Due to Java type erasure, we can't have both: > - Function<V, KO> foreignKeyExtractor > - Function<KeyValue<K, V>, KO> foreignKeyExtractor > in method overloads as they become identical at runtime. > > Options: > 1. Breaking Change Approach > - Replace value-only extractor with key-value extractor > - Clean API but breaks backward compatibility > > 2. Compatibility Approach > - Keep both capabilities through different method names (e.g., > join/joinWithKey) > - Maintains compatibility but less elegant API > > Questions for Discussion: > 1. Should we prioritize API elegance or backward compatibility? > 2. If we choose compatibility, which naming convention should we use for > the new methods? > 3. Should we consider deprecating the value-only extractor in a future > release? > > Looking forward to your thoughts. > > Best regards, > Peter > > On Thu, Oct 31, 2024 at 1:08 PM Chu Cheng Li <peterx...@gmail.com> wrote: > > > Hi Everyone, > > I would like to start a discussion on KIP-1104: > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-1103%3A+Additional+metrics+for+cooperative+consumption > > <https://bitli.pro/2h2om_f8e74a0c> > > > > This KIP allow foreign key extraction from both key and value in KTable > > Joins, before this KIP user can only extract foreign from record's value, > > this KIP provides more flexibility on it. > > > > Regards, > > Peter Lee > > > > > >