My two cents: keep the same method and class names and just use a different
package. Strongly dislike coming up with slightly different names for
everything.

Ryanne

On Tue, Feb 2, 2021, 4:41 AM Tom Bentley <tbent...@redhat.com> wrote:

> I've previously discounted the possibility of an "Admin2" client, but
> seeing the recent discussions on the thread for KIP-706, I wonder whether
> this current proposal in KIP-707 would benefit from a bit more
> discussion... I think there are broadly two approaches to evolving the
> Admin client API to use CompletionStage directly (rather than what's
> currently proposed in KIP-707):
>
> The simpler option, from a development point of view, would be to introduce
> an alternative/parallel set of classes for each of the existing result
> classes. E.g. ListTopicsOutcome which was the same as ListTopicsResult, but
> using CompletionStage rather than KafkaFuture. Adding methods to the
> existing Admin interface would require coming up with synonym method names
> for every API call, and probably half of the API being deprecated (if not
> immediately then in the long run). It would be cleaner to have a whole new
> interface, let's call it Manager, using the same method names. The existing
> Admin client implementation would then wrap a Manager instance, and the
> existing Result classes could have a constructor parameter of their
> corresponding Outcome instance which wrapped the CompletionStages with
> KafkaFutures. The Options classes would be unchanged. From a users point of
> view migrating to the new Manager client would mostly be a matter of
> changing class names and adding a `.toCompletionStage()` to those places
> where they were calling KafkaFuture.get()/getNow() (and even this could be
> avoided if we used CompletableFuture rather than CompletionStage in the
> Outcome class APIs). In the long run Admin would be removed and we'd be
> left with the minor annoyance of having a client called Manager in a
> package called admin.
>
> The more involved version would do a similar refactoring, but within a
> different package. If we stuck with the Admin and Result class names the
> users experience of migrating their codebase would be limited to changing
> import statements and the same additions of `.toCompletionStage()`. On the
> implementation side it would force us to duplicate all the Options classes
> and also have a way of converting old Options instances to their new
> equivalents so that the old Admin implementation could delegate to the new
> one. The main benefit of this approach seems to be the slightly easier
> experience for people porting their code to the new client.
>
> In doing either of these much more significant refactorings there would
> also be the opportunity to omit the current Admin API's deprecated methods
> and classes from the new API.
>
> Do we think this is worth biting off in order to have more long term
> consistency between the Admin, Producer and consumer APIs?
>
> Kind regards,
>
> Tom
>
> On Fri, Jan 22, 2021 at 3:02 PM Tom Bentley <tbent...@redhat.com> wrote:
>
> > Hi,
> >
> > Following a recent discussion on a PR[1], I've written KIP-707 to
> > establish what should be done to improve the API of KafkaFuture.
> > If you have the time, your comments would be most welcome, as some of the
> > rejected alternatives are not unreasonable.
> >
> >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-707%3A+The+future+of+KafkaFuture
> >
> > Many thanks,
> >
> > Tom
> >
> > [1]: https://github.com/apache/kafka/pull/9878
> >
>

Reply via email to