tombentley commented on pull request #9878:
URL: https://github.com/apache/kafka/pull/9878#issuecomment-764685652


   Note that `CompletionStage` on its own does not define `get`, `getNow`, 
which are vital methods for people wanting to use the client in a sync fashion, 
so I think the comparison is between `Admin2` API which used 
`CompletableFuture` and `Admin` using a `KafkaFuture` that implemented 
`CompletionStage`. I suppose you could use `toCompletableFuture`, but then it's 
less of a drop-in replacement.
   
   A `KafkaFuture` that implemented `CompletionStage` adds very little 
additional value over `CompletableFuture` in the long term, _except_ the value 
of backwards compatibility. Anything like `Admin2`:
   
   * would require quite a lot of work by the project (e.g. doubled test 
surface), albeit not a burden to be carried forever, and maybe the thin facade 
idea means it wouldn't really be so bad
   * incurs a cost to users of discovering and switching to the new API, which 
offers nothing they couldn't do with a `KafkaFuture` that implemented 
`CompletionStage`.
   
   My gut feeling is that if the only reason for an `Admin2` was to get rid of 
`KafkaFuture` then there doesn't seem to be enough of a benefit to justify it. 
If there were other things which could be cleaned up at the same time then 
perhaps that would shift the balance.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to