[ https://issues.apache.org/jira/browse/KAFKA-12849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17351970#comment-17351970 ]
A. Sophie Blee-Goldman commented on KAFKA-12849: ------------------------------------------------ That's something we'll need to consider during the KIP discussion. Just changing it from a class to an interface is source compatible (though not binary compatible, which is ok under our policy), however the only thing that would "break" is if the user was calling the constructor. In KIP-740 we ultimately decided to deprecate this constructor in 3.0, but we had considered just changing it directly instead, so I would try to gauge how people feel about this change. Personally I find it unlikely that anyone was invoking the constructor, and the constructor itself was not intended to be public, but it is still possible. So it may be that we need to follow a different approach, for example by introducing a new interface and just deprecating the entire class. We can keep the same name if we just put the interface in the o.a.k.streams package, which imo makes more sense anyways. Taking this approach would actually fix one of the messy parts of KIP-740, as we can just start out with a `public TaskId taskId()` method on the new interface, and remove the `public TaskId getTaskId()` method on the current TaskMetadata class, which we had to introduce since the name `taskInfo()` was already taken by a method that just returned it as a string. Does all that make sense? Happy to clarify further, but I recommend reading KIP-740 if you haven't already as it should clear some things up > Consider migrating TaskMetadata to interface with internal implementation > ------------------------------------------------------------------------- > > Key: KAFKA-12849 > URL: https://issues.apache.org/jira/browse/KAFKA-12849 > Project: Kafka > Issue Type: Improvement > Components: streams > Reporter: A. Sophie Blee-Goldman > Assignee: Josep Prat > Priority: Major > Labels: needs-kip, newbie, newbie++ > > In KIP-740 we had to go through a deprecation cycle in order to change the > constructor from the original one which accepted the taskId parameter as a > string, to the new one which takes a TaskId object directly. We had > considered just changing the signature directly without deprecation as this > was never intended to be instantiated by users, rather it just acts as a > pass-through metadata class. Sort of by definition if there is no reason to > ever instantiate it, this seems to indicate it may be better suited as a > public interface with the implementation and constructor as internal APIs. -- This message was sent by Atlassian Jira (v8.3.4#803005)