Hi Hu Xi,

On Mon, Feb 6, 2017, at 19:37, Hu Xi wrote:
> Two things I want to confirm. Please advise.
> 
> 
> 1. Seems the KIP only cares about topic management things. Is there any
> plan for this KIP to merge the feature of what `GetOffsetShell` script
> offers? Since a lot of people really want to know/monitor how many
> committed records have been created for a topic.

Yes, I think we should provide the ability to get offsets for a topic in
a follow-on KIP.  We are also planning on adding ACL management and
AlterTopic functionality, in follow-on work.

> 
> 
> 2. Since deleting topic is a totally async process, is there any way for
> me to make sure the topic is deleted successfully after invoking
> deleteTopic once the KIP is implemented?

One way would be to periodically list the topics and wait for it to go
away.

best,
Colin

> 
> 
> Regards,
> 
> 
> -- huxi
> 
> 
> ________________________________
> 发件人: radai <radai.rosenbl...@gmail.com>
> 发送时间: 2017年2月7日 10:46
> 收件人: dev@kafka.apache.org
> 主题: Re: [DISCUSS] KIP-117: Add a public AdministrativeClient API for
> Kafka admin operations
> 
> even assuming all consumers use kafka for offset storage, would it be
> possible to get this information from a single broker without "reaching
> out" to all brokers in a cluster?
> 
> On Mon, Feb 6, 2017 at 2:05 PM, Jianbin Wei <jianbin....@netskope.com>
> wrote:
> 
> > In the specify group information, can we also return information like
> > partition assignment for each member, the lag/offset of each
> > member/partition?  It would be useful for Ops/Admin regarding the health of
> > the consumer group.
> >
> > Regards,
> >
> > -- Jianbin
> >
> > > On Feb 6, 2017, at 13:54, Guozhang Wang <wangg...@gmail.com> wrote:
> > >
> > > Some follow-up on 2) / 3) below.
> > >
> > > On Mon, Feb 6, 2017 at 11:21 AM, Colin McCabe <cmcc...@apache.org
> > <mailto:cmcc...@apache.org>> wrote:
> > >
> > >> On Fri, Feb 3, 2017, at 16:25, Guozhang Wang wrote:
> > >>> Thanks for the proposal Colin. A few comments below:
> > >>
> > >> Thanks for taking a look, Guozhang.
> > >>
> > >>>
> > >>> 1. There are a couple of classes that looks new to me but not defined
> > >>> anywhere. For example: NewTopic (topic name and configs?), TopicInfo
> > (is
> > >>> this a wrapper of MetadataResponse.TopicMetadata?), NodeApiVersions,
> > >>> GroupOverview.
> > >>> Could you provide their class definitions?
> > >>
> > >> Good point.  I will add them in the KIP.
> > >>
> > >> NodeApiVersions is at
> > >> ./clients/src/main/java/org/apache/kafka/clients/NodeApiVersions.java
> > >>
> > >>>
> > >>> 2. In Streams, we would like to replace its own `
> > >>> org.apache.kafka.streams.processor.internals.StreamsKafkaClient` class
> > >>> with
> > >>> this new admin client.  One additional request though, is that for
> > create
> > >>> /
> > >>> delete topics, we'd like to use a different "flag" as BLOCKING, which
> > >>> means
> > >>> the response will not be sent back until the controller has updated its
> > >>> own
> > >>> metadata cache for the topic, and even STRICT_BLOCKING, which means the
> > >>> response will not be sent back until the metadata has been propagated
> > to
> > >>> the whole cluster.
> > >>
> > >> Hmm.  It seems like this would require additional RPCs or changes to
> > >> existing RPCs on the server.  So we should handle this in a follow-on
> > >> KIP, I think.
> > >>
> > >>
> > > I agree for STRICT_BLOCKING, while for BLOCKING, it is already supported
> > as
> > > of today I think, and Streams' KafkaClient is using that mechanism as
> > well.
> > >
> > >
> > >>>
> > >>> 3. I'm wondering what's the usage of "public Map<Node,
> > >>> Try<List<GroupOverview>>> getAllGroups()", or rather, would it be more
> > >>> useful to get a specific group information given the group id?
> > Otherwise
> > >>> we
> > >>> need to query each one of the coordinator.
> > >>
> > >> That's a good point.  We should have an API that gets information about
> > >> a specific group, by querying only the coordinator for that group.  By
> > >> the way, what specific group information should we expose, besides name
> > >> and protocolType?
> > >>
> > >>
> > > I think these can all be returned?
> > >
> > > (groupID, protocolType, generationID, state, members: [memberID,
> > > clientHost], leaderID (nullable) )
> > >
> > >
> > >>>
> > >>> 4. I'm +1 with Ismael's suggestion for having the AdminClient interface
> > >>> with a KafkaAdminClient impl, this at least allows easier mocks for
> > unit
> > >>> testing.
> > >>
> > >> Yeah, I agree.  Hopefully that will also make it a little clearer what
> > >> the boundary is between the internal functions and classes and the
> > >> public API.  I'll update the KIP accordingly.
> > >>
> > >> thanks,
> > >> Colin
> > >>
> > >>>
> > >>> Guozhang
> > >>>
> > >>>
> > >>>
> > >>> On Fri, Feb 3, 2017 at 10:40 AM, Colin McCabe <cmcc...@apache.org>
> > >> wrote:
> > >>>
> > >>>> On Thu, Feb 2, 2017, at 15:02, Ismael Juma wrote:
> > >>>>> Hi Colin,
> > >>>>>
> > >>>>> Thanks for the KIP, great to make progress on this. I have some
> > >> initial
> > >>>>> comments, will post more later:
> > >>>>>
> > >>>>> 1. We have KafkaProducer that implements the Producer interface and
> > >>>>> KafkaConsumer that implements the Consumer interface. Maybe we could
> > >> have
> > >>>>> KafkaAdminClient that implements the AdminClient interface? Or maybe
> > >> just
> > >>>>> KafkaAdmin. Not sure, some ideas for consideration. Also, I don't
> > >> think
> > >>>>> we
> > >>>>> should worry about a name clash with the internal AdminClient
> > >> written in
> > >>>>> Scala. That will go away soon enough and choosing a good name for the
> > >>>>> public class is what matters.
> > >>>>
> > >>>> Hi Ismael,
> > >>>>
> > >>>> Thanks for taking a look.
> > >>>>
> > >>>> I guess my thought process was that users might find it confusing if
> > >> the
> > >>>> public API and the old private API had the same name.  "What do you
> > >>>> mean, I have to upgrade to release X to get AdminClient, I have it
> > >> right
> > >>>> here?"  I do have a slight preference for the shorter name, though, so
> > >>>> if this isn't a worry, we can change it to AdminClient.
> > >>>>
> > >>>>>
> > >>>>> 2. We should include the proposed package name in the KIP
> > >>>>> (probably org.apache.kafka.clients.admin?).
> > >>>>
> > >>>> Good idea.  I will add the package name to the KIP.
> > >>>>
> > >>>>>
> > >>>>> 3. It would be good to list the supported configs.
> > >>>>
> > >>>> OK
> > >>>>
> > >>>>>
> > >>>>> 4. KIP-107, which passed the vote, specifies the introduction of a
> > >> method
> > >>>>> to AdminClient with the following signature. We should figure out
> > >> how it
> > >>>>> would look given this proposal.
> > >>>>>
> > >>>>> Future<Map<TopicPartition, PurgeDataResult>>
> > >>>>> purgeDataBefore(Map<TopicPartition, Long> offsetForPartition)
> > >>>>>
> > >>>>> 5. I am not sure about rejecting the Futures-based API. I think I
> > >> would
> > >>>>> prefer that, personally. Grant had an interesting idea of not
> > >> exposing
> > >>>>> the
> > >>>>> batch methods in the AdminClient to start with to keep it simple and
> > >>>>> relying on a Future based API to make it easy for users to run things
> > >>>>> concurrently. This is consistent with the producer...
> > >>>>
> > >>>> So, there are two ways that an operation can be "async" here which are
> > >>>> very separate.
> > >>>>
> > >>>> There is "async on the server."  This basically means that we tell the
> > >>>> server to do something and don't wait for a confirmation that it
> > >>>> succeeded.  For example, in the current proposal, users can call
> > >>>> createTopic(new Topic(...), CreateTopicFlags.NONBLOCKING).  The call
> > >>>> will wait for the server to get the request, which will go into
> > >>>> purgatory.  Later on, the request may succeed or fail, but the client
> > >>>> won't know either way.  In RPC terms, this means we set the timeout
> > >>>> value to 0.
> > >>>>
> > >>>> Then there is "async on the client."  This just means that the client
> > >>>> thread doesn't block-- instead, it gets back a Future (or similar
> > >>>> object).  What this boils down to in terms of implementation is that a
> > >>>> message gets put on some queue somewhere and the client thread
> > >> continues
> > >>>> running.
> > >>>>
> > >>>> "async on the client" tends to be good when you want to churn out a
> > ton
> > >>>> of requests without using lots of threads.  However, it is more
> > >>>> confusing mental model for most programmers.
> > >>>>
> > >>>> You can easily translate a Futures-based API into a blocking API by
> > >>>> having blocking shims that just call create the Future and call get().
> > >>>> Similarly, you can transform a blocking API into a Futures-based API
> > by
> > >>>> using a thread pool.  Thread pools use resources, though, whereas
> > >> having
> > >>>> function shims does not.
> > >>>>
> > >>>> I haven't seen any discussion here about what we gain here by using a
> > >>>> Futures-based API.  It makes sense to use Futures in the Producer,
> > >> since
> > >>>> they're more flexible, and users are potentially creating lots and
> > lots
> > >>>> of messages.  I'm not sure if users would want to do lots and lots of
> > >>>> admin operations with a single thread.  I'd be curious to hear a
> > little
> > >>>> more from potential end-users about what API would be most flexible
> > and
> > >>>> usable for them.  I'm open to ideas.
> > >>>>
> > >>>> best,
> > >>>> Colin
> > >>>>
> > >>>>>
> > >>>>> Ismael
> > >>>>>
> > >>>>> On Thu, Feb 2, 2017 at 6:54 PM, Colin McCabe <cmcc...@apache.org>
> > >> wrote:
> > >>>>>
> > >>>>>> Hi all,
> > >>>>>>
> > >>>>>> I wrote up a Kafka improvement proposal for adding an
> > >>>>>> AdministrativeClient interface.  This is a continuation of the
> > >> work on
> > >>>>>> KIP-4 towards centralized administrative operations.  Please check
> > >> out
> > >>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> > >>>> 117%3A+Add+a+public+
> > >>>>>> AdministrativeClient+API+for+Kafka+admin+operations
> > >>>>>>
> > >>>>>> regards,
> > >>>>>> Colin
> > >>>>>>
> > >>>>
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> -- Guozhang
> > >>
> > >
> > >
> > >
> > > --
> > > -- Guozhang
> >
> >

Reply via email to