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
> >
> >
> >

Reply via email to