Thanks for sending that out Joe - I don't think I will be able to make it today, so if notes can be sent out afterward that would be great.
On Mon, Mar 02, 2015 at 09:16:13AM -0800, Gwen Shapira wrote: > Thanks for sending this out Joe. Looking forward to chatting with everyone :) > > On Mon, Mar 2, 2015 at 6:46 AM, Joe Stein <joe.st...@stealth.ly> wrote: > > Hey, I just sent out a google hangout invite to all pmc, committers and > > everyone I found working on a KIP. If I missed anyone in the invite please > > let me know and can update it, np. > > > > We should do this every Tuesday @ 2pm Eastern Time. Maybe we can get INFRA > > help to make a google account so we can manage better? > > > > To discuss > > https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals > > in progress and related JIRA that are interdependent and common work. > > > > ~ Joe Stein > > > > On Tue, Feb 24, 2015 at 2:59 PM, Jay Kreps <jay.kr...@gmail.com> wrote: > > > >> Let's stay on Google hangouts that will also record and make the sessions > >> available on youtube. > >> > >> -Jay > >> > >> On Tue, Feb 24, 2015 at 11:49 AM, Jeff Holoman <jholo...@cloudera.com> > >> wrote: > >> > >> > Jay / Joe > >> > > >> > We're happy to send out a Webex for this purpose. We could record the > >> > sessions if there is interest and publish them out. > >> > > >> > Thanks > >> > > >> > Jeff > >> > > >> > On Tue, Feb 24, 2015 at 11:28 AM, Jay Kreps <jay.kr...@gmail.com> wrote: > >> > > >> > > Let's try to get the technical hang-ups sorted out, though. I really > >> > think > >> > > there is some benefit to live discussion vs writing. I am hopeful that > >> if > >> > > we post instructions and give ourselves a few attempts we can get it > >> > > working. > >> > > > >> > > Tuesday at that time would work for me...any objections? > >> > > > >> > > -Jay > >> > > > >> > > On Tue, Feb 24, 2015 at 8:18 AM, Joe Stein <joe.st...@stealth.ly> > >> wrote: > >> > > > >> > > > Weekly would be great maybe like every Tuesday ~ 1pm ET / 10am PT > >> ???? > >> > > > > >> > > > I don't mind google hangout but there is always some issue or > >> whatever > >> > so > >> > > > we know the apache irc channel works. We can start there and see how > >> it > >> > > > goes? We can pull transcripts too and associate to tickets if need be > >> > > makes > >> > > > it helpful for things. > >> > > > > >> > > > ~ Joestein > >> > > > > >> > > > On Tue, Feb 24, 2015 at 11:10 AM, Jay Kreps <jay.kr...@gmail.com> > >> > wrote: > >> > > > > >> > > > > We'd talked about doing a Google Hangout to chat about this. What > >> > about > >> > > > > generalizing that a little further...I actually think it would be > >> > good > >> > > > for > >> > > > > everyone spending a reasonable chunk of their week on Kafka stuff > >> to > >> > > > maybe > >> > > > > sync up once a week. I think we could use time to talk through > >> design > >> > > > > stuff, make sure we are on top of code reviews, talk through any > >> > tricky > >> > > > > issues, etc. > >> > > > > > >> > > > > We can make it publicly available so that any one can follow along > >> > who > >> > > > > likes. > >> > > > > > >> > > > > Any interest in doing this? If so I'll try to set it up starting > >> next > >> > > > week. > >> > > > > > >> > > > > -Jay > >> > > > > > >> > > > > On Tue, Feb 24, 2015 at 3:57 AM, Andrii Biletskyi < > >> > > > > andrii.bilets...@stealth.ly> wrote: > >> > > > > > >> > > > > > Hi all, > >> > > > > > > >> > > > > > I've updated KIP page, fixed / aligned document structure. Also I > >> > > added > >> > > > > > some > >> > > > > > very initial proposal for AdminClient so we have something to > >> start > >> > > > from > >> > > > > > while > >> > > > > > discussing the KIP. > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations > >> > > > > > > >> > > > > > Thanks, > >> > > > > > Andrii Biletskyi > >> > > > > > > >> > > > > > On Wed, Feb 18, 2015 at 9:01 PM, Andrii Biletskyi < > >> > > > > > andrii.bilets...@stealth.ly> wrote: > >> > > > > > > >> > > > > > > Jay, > >> > > > > > > > >> > > > > > > Re error messages: you are right, in most cases client will > >> have > >> > > > enough > >> > > > > > > context to show descriptive error message. My concern is that > >> we > >> > > will > >> > > > > > have > >> > > > > > > to > >> > > > > > > add lots of new error codes for each possible error. Of course, > >> > we > >> > > > > could > >> > > > > > > reuse > >> > > > > > > some of existing like UknownTopicOrPartitionCode, but we will > >> > also > >> > > > need > >> > > > > > to > >> > > > > > > add smth like: TopicAlreadyExistsCode, TopicConfigInvalid (both > >> > for > >> > > > > topic > >> > > > > > > name and config, and probably user would like to know what > >> > exactly > >> > > > > > > is wrong in his config), InvalidReplicaAssignment, > >> InternalError > >> > > > (e.g. > >> > > > > > > zookeeper failure) etc. > >> > > > > > > And this is only for TopicCommand, we will also need to add > >> > similar > >> > > > > stuff > >> > > > > > > for > >> > > > > > > ReassignPartitions, PreferredReplica. So we'll end up with a > >> > large > >> > > > list > >> > > > > > of > >> > > > > > > error codes, used only in Admin protocol. > >> > > > > > > Having said that, I agree my proposal is not consistent with > >> > other > >> > > > > cases. > >> > > > > > > Maybe we can find better solution or something in-between. > >> > > > > > > > >> > > > > > > Re Hangout chat: I think it is a great idea. This way we can > >> move > >> > > on > >> > > > > > > faster. > >> > > > > > > Let's agree somehow on date/time so people can join. Will work > >> > for > >> > > me > >> > > > > > this > >> > > > > > > and > >> > > > > > > next week almost anytime if agreed in advance. > >> > > > > > > > >> > > > > > > Thanks, > >> > > > > > > Andrii > >> > > > > > > > >> > > > > > > On Wed, Feb 18, 2015 at 7:09 PM, Jay Kreps < > >> jay.kr...@gmail.com> > >> > > > > wrote: > >> > > > > > > > >> > > > > > >> Hey Andrii, > >> > > > > > >> > >> > > > > > >> Generally we can do good error handling without needing custom > >> > > > > > server-side > >> > > > > > >> messages. I.e. generally the client has the context to know > >> that > >> > > if > >> > > > it > >> > > > > > got > >> > > > > > >> an error that the topic doesn't exist to say "Topic X doesn't > >> > > exist" > >> > > > > > >> rather > >> > > > > > >> than "error code 14" (or whatever). Maybe there are specific > >> > cases > >> > > > > where > >> > > > > > >> this is hard? If we want to add server-side error messages we > >> > > really > >> > > > > do > >> > > > > > >> need to do this in a consistent way across the protocol. > >> > > > > > >> > >> > > > > > >> I still have a bunch of open questions here from my previous > >> > > list. I > >> > > > > > will > >> > > > > > >> be out for the next few days for Strata though. Maybe we could > >> > do > >> > > a > >> > > > > > Google > >> > > > > > >> Hangout chat on any open issues some time towards the end of > >> > next > >> > > > week > >> > > > > > for > >> > > > > > >> anyone interested in this ticket? I have a feeling that might > >> > > > progress > >> > > > > > >> things a little faster than email--I think we could talk > >> through > >> > > > those > >> > > > > > >> issues I brought up fairly quickly... > >> > > > > > >> > >> > > > > > >> -Jay > >> > > > > > >> > >> > > > > > >> On Wed, Feb 18, 2015 at 7:27 AM, Andrii Biletskyi < > >> > > > > > >> andrii.bilets...@stealth.ly> wrote: > >> > > > > > >> > >> > > > > > >> > Hi all, > >> > > > > > >> > > >> > > > > > >> > I'm trying to address some of the issues which were > >> mentioned > >> > > > > earlier > >> > > > > > >> about > >> > > > > > >> > Admin RQ/RP format. One of those was about batching > >> > operations. > >> > > > What > >> > > > > > if > >> > > > > > >> we > >> > > > > > >> > follow TopicCommand approach and let people specify > >> topic-name > >> > > by > >> > > > > > >> regexp - > >> > > > > > >> > would that cover most of the use cases? > >> > > > > > >> > > >> > > > > > >> > Secondly, is what information should we generally provide in > >> > > Admin > >> > > > > > >> > responses. > >> > > > > > >> > I realize that Admin commands don't imply they will be used > >> > only > >> > > > in > >> > > > > > CLI > >> > > > > > >> > but, > >> > > > > > >> > it seems to me, CLI is a very important client of this > >> > feature. > >> > > In > >> > > > > > this > >> > > > > > >> > case, > >> > > > > > >> > seems logical, we would like to provide users with rich > >> > > experience > >> > > > > in > >> > > > > > >> terms > >> > > > > > >> > of > >> > > > > > >> > getting results / errors of the executed commands. Usually > >> we > >> > > > supply > >> > > > > > >> with > >> > > > > > >> > responses only errorCode, which looks very limiting, in case > >> > of > >> > > > CLI > >> > > > > we > >> > > > > > >> may > >> > > > > > >> > want to print human readable error description. > >> > > > > > >> > > >> > > > > > >> > So, taking into account previous item about batching, what > >> do > >> > > you > >> > > > > > think > >> > > > > > >> > about > >> > > > > > >> > having smth like: > >> > > > > > >> > > >> > > > > > >> > ('create' doesn't support regexp) > >> > > > > > >> > CreateTopicRequest => TopicName Partitions Replicas > >> > > > > ReplicaAssignment > >> > > > > > >> > [Config] > >> > > > > > >> > CreateTopicResponse => ErrorCode ErrorDescription > >> > > > > > >> > ErrorCode => int16 > >> > > > > > >> > ErrorDescription => string (empty if successful) > >> > > > > > >> > > >> > > > > > >> > AlterTopicRequest -> TopicNameRegexp Partitions > >> > > ReplicaAssignment > >> > > > > > >> > [AddedConfig] [DeletedConfig] > >> > > > > > >> > AlterTopicResponse -> [TopicName ErrorCode ErrorDescription] > >> > > > > > >> > CommandErrorCode CommandErrorDescription > >> > > > > > >> > CommandErrorCode => int16 > >> > > > > > >> > CommandErrorDescription => string (nonempty in case of > >> fatal > >> > > > > error, > >> > > > > > >> e.g. > >> > > > > > >> > we couldn't get topics by regexp) > >> > > > > > >> > > >> > > > > > >> > DescribeTopicRequest -> TopicNameRegexp > >> > > > > > >> > DescribeTopicResponse -> [TopicName TopicDescription > >> ErrorCode > >> > > > > > >> > ErrorDescription] CommandErrorCode CommandErrorDescription > >> > > > > > >> > > >> > > > > > >> > Also, any thoughts about our discussion regarding re-routing > >> > > > > facility? > >> > > > > > >> In > >> > > > > > >> > my > >> > > > > > >> > understanding, it is like between augmenting > >> > > TopicMetadataRequest > >> > > > > > >> > (to include at least controllerId) and implementing new > >> > generic > >> > > > > > >> re-routing > >> > > > > > >> > facility so sending messages to controller will be handled > >> by > >> > > it. > >> > > > > > >> > > >> > > > > > >> > Thanks, > >> > > > > > >> > Andrii Biletskyi > >> > > > > > >> > > >> > > > > > >> > On Mon, Feb 16, 2015 at 5:26 PM, Andrii Biletskyi < > >> > > > > > >> > andrii.bilets...@stealth.ly> wrote: > >> > > > > > >> > > >> > > > > > >> > > @Guozhang: > >> > > > > > >> > > Thanks for your comments, I've answered some of those. The > >> > > main > >> > > > > > thing > >> > > > > > >> is > >> > > > > > >> > > having merged request for create-alter-delete-describe - I > >> > > have > >> > > > > some > >> > > > > > >> > > concerns about this approach. > >> > > > > > >> > > > >> > > > > > >> > > @*Jay*: > >> > > > > > >> > > I see that introduced ClusterMetadaRequest is also one of > >> > the > >> > > > > > >> concerns. > >> > > > > > >> > We > >> > > > > > >> > > can solve it if we implement re-routing facility. But I > >> > agree > >> > > > with > >> > > > > > >> > > Guozhang - it will make clients' internals a little bit > >> > easier > >> > > > but > >> > > > > > >> this > >> > > > > > >> > > seems to be a complex logic to implement and support then. > >> > > > > > Especially > >> > > > > > >> for > >> > > > > > >> > > Fetch and Produce (even if we add re-routing later for > >> these > >> > > > > > >> requests). > >> > > > > > >> > > Also people will tend to avoid this re-routing facility > >> and > >> > > hold > >> > > > > > local > >> > > > > > >> > > cluster cache to ensure their high-priority requests > >> (which > >> > > some > >> > > > > of > >> > > > > > >> the > >> > > > > > >> > > admin requests are) not sent to some busy broker where > >> they > >> > > wait > >> > > > > to > >> > > > > > be > >> > > > > > >> > > routed to the correct one. > >> > > > > > >> > > As pointed out by Jun here ( > >> > > > > > >> > > > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://issues.apache.org/jira/browse/KAFKA-1772?focusedCommentId=14234530&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14234530 > >> > > > > > >> > ) > >> > > > > > >> > > to solve the issue we might introduce a message type to > >> get > >> > > > > cluster > >> > > > > > >> > state. > >> > > > > > >> > > But I agree we can just update TopicMetadataResponse to > >> > > include > >> > > > > > >> > > controllerId (and probably smth else). > >> > > > > > >> > > What are you thougths? > >> > > > > > >> > > > >> > > > > > >> > > Thanks, > >> > > > > > >> > > Andrii > >> > > > > > >> > > > >> > > > > > >> > > On Thu, Feb 12, 2015 at 8:31 AM, Guozhang Wang < > >> > > > > wangg...@gmail.com> > >> > > > > > >> > wrote: > >> > > > > > >> > > > >> > > > > > >> > >> I think for the topics commands we can actually merge > >> > > > > > >> > >> create/alter/delete/describe as one request type since > >> > their > >> > > > > > formats > >> > > > > > >> are > >> > > > > > >> > >> very much similar, and keep list-topics and others like > >> > > > > > >> > >> partition-reassignment / preferred-leader-election as > >> > > separate > >> > > > > > >> request > >> > > > > > >> > >> types, I also left some other comments on the RB ( > >> > > > > > >> > >> https://reviews.apache.org/r/29301/). > >> > > > > > >> > >> > >> > > > > > >> > >> On Wed, Feb 11, 2015 at 2:04 PM, Jay Kreps < > >> > > > jay.kr...@gmail.com> > >> > > > > > >> wrote: > >> > > > > > >> > >> > >> > > > > > >> > >> > Yeah I totally agree that we don't want to just have > >> one > >> > > "do > >> > > > > > admin > >> > > > > > >> > >> stuff" > >> > > > > > >> > >> > command that has the union of all parameters. > >> > > > > > >> > >> > > >> > > > > > >> > >> > What I am saying is that command line tools are one > >> > client > >> > > of > >> > > > > the > >> > > > > > >> > >> > administrative apis, but these will be used in a number > >> > of > >> > > > > > >> scenarios > >> > > > > > >> > so > >> > > > > > >> > >> > they should make logical sense even in the absence of > >> the > >> > > > > command > >> > > > > > >> line > >> > > > > > >> > >> > tool. Hence comments like trying to clarify the > >> > > relationship > >> > > > > > >> between > >> > > > > > >> > >> > ClusterMetadata and TopicMetadata...these kinds of > >> things > >> > > > > really > >> > > > > > >> need > >> > > > > > >> > >> to be > >> > > > > > >> > >> > thought through. > >> > > > > > >> > >> > > >> > > > > > >> > >> > Hope that makes sense. > >> > > > > > >> > >> > > >> > > > > > >> > >> > -Jay > >> > > > > > >> > >> > > >> > > > > > >> > >> > On Wed, Feb 11, 2015 at 1:41 PM, Andrii Biletskyi < > >> > > > > > >> > >> > andrii.bilets...@stealth.ly> wrote: > >> > > > > > >> > >> > > >> > > > > > >> > >> > > Jay, > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > Thanks for answering. You understood correctly, most > >> of > >> > > my > >> > > > > > >> comments > >> > > > > > >> > >> were > >> > > > > > >> > >> > > related to your point 1) - about "well thought-out" > >> > apis. > >> > > > > Also, > >> > > > > > >> yes, > >> > > > > > >> > >> as I > >> > > > > > >> > >> > > understood we would like to introduce a single > >> unified > >> > > CLI > >> > > > > tool > >> > > > > > >> with > >> > > > > > >> > >> > > centralized server-side request handling for lots of > >> > > > existing > >> > > > > > >> ones > >> > > > > > >> > >> (incl. > >> > > > > > >> > >> > > TopicCommand, CommitOffsetChecker, > >> ReassignPartitions, > >> > > smth > >> > > > > > else > >> > > > > > >> if > >> > > > > > >> > >> added > >> > > > > > >> > >> > > in future). In our previous discussion ( > >> > > > > > >> > >> > > https://issues.apache.org/jira/browse/KAFKA-1694) > >> > people > >> > > > > said > >> > > > > > >> > they'd > >> > > > > > >> > >> > > rather > >> > > > > > >> > >> > > have a separate message for each command, so, yes, > >> this > >> > > > way I > >> > > > > > >> came > >> > > > > > >> > to > >> > > > > > >> > >> 1-1 > >> > > > > > >> > >> > > mapping between commands in the tool and protocol > >> > > > additions. > >> > > > > > But > >> > > > > > >> I > >> > > > > > >> > >> might > >> > > > > > >> > >> > be > >> > > > > > >> > >> > > wrong. > >> > > > > > >> > >> > > At the end I just try to start discussion how at > >> least > >> > > > > > generally > >> > > > > > >> > this > >> > > > > > >> > >> > > protocol should look like. > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > Thanks, > >> > > > > > >> > >> > > Andrii > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > On Wed, Feb 11, 2015 at 11:10 PM, Jay Kreps < > >> > > > > > jay.kr...@gmail.com > >> > > > > > >> > > >> > > > > > >> > >> wrote: > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > > Hey Andrii, > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > To answer your earlier question we just really > >> can't > >> > be > >> > > > > > adding > >> > > > > > >> any > >> > > > > > >> > >> more > >> > > > > > >> > >> > > > scala protocol objects. These things are super hard > >> > to > >> > > > > > maintain > >> > > > > > >> > >> because > >> > > > > > >> > >> > > > they hand code the byte parsing and don't have good > >> > > > > > versioning > >> > > > > > >> > >> support. > >> > > > > > >> > >> > > > Since we are already planning on converting we > >> > > definitely > >> > > > > > don't > >> > > > > > >> > >> want to > >> > > > > > >> > >> > > add > >> > > > > > >> > >> > > > a ton more of these--they are total tech debt. > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > What does it mean that the changes are isolated > >> from > >> > > the > >> > > > > > >> current > >> > > > > > >> > >> code > >> > > > > > >> > >> > > base? > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > I actually didn't understand the remaining > >> comments, > >> > > > which > >> > > > > of > >> > > > > > >> the > >> > > > > > >> > >> > points > >> > > > > > >> > >> > > > are you responding to? > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > Maybe one sticking point here is that it seems like > >> > you > >> > > > > want > >> > > > > > to > >> > > > > > >> > make > >> > > > > > >> > >> > some > >> > > > > > >> > >> > > > kind of tool, and you have made a 1-1 mapping > >> between > >> > > > > > commands > >> > > > > > >> you > >> > > > > > >> > >> > > imagine > >> > > > > > >> > >> > > > in the tool and protocol additions. I want to make > >> > sure > >> > > > we > >> > > > > > >> don't > >> > > > > > >> > do > >> > > > > > >> > >> > that. > >> > > > > > >> > >> > > > The protocol needs to be really really well thought > >> > out > >> > > > > > against > >> > > > > > >> > many > >> > > > > > >> > >> > use > >> > > > > > >> > >> > > > cases so it should make perfect logical sense in > >> the > >> > > > > absence > >> > > > > > of > >> > > > > > >> > >> knowing > >> > > > > > >> > >> > > the > >> > > > > > >> > >> > > > command line tool, right? > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > -Jay > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > On Wed, Feb 11, 2015 at 11:57 AM, Andrii Biletskyi > >> < > >> > > > > > >> > >> > > > andrii.bilets...@stealth.ly> wrote: > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > > Hey Jay, > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > I would like to continue this discussion as it > >> seem > >> > > > there > >> > > > > > is > >> > > > > > >> no > >> > > > > > >> > >> > > progress > >> > > > > > >> > >> > > > > here. > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > First of all, could you please explain what did > >> you > >> > > > mean > >> > > > > in > >> > > > > > >> 2? > >> > > > > > >> > How > >> > > > > > >> > >> > > > exactly > >> > > > > > >> > >> > > > > are we going to migrate to the new java protocol > >> > > > > > definitions. > >> > > > > > >> > And > >> > > > > > >> > >> why > >> > > > > > >> > >> > > > it's > >> > > > > > >> > >> > > > > a blocker for centralized CLI? > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > I agree with you, this feature includes lots of > >> > > stuff, > >> > > > > but > >> > > > > > >> > >> thankfully > >> > > > > > >> > >> > > > > almost all changes are isolated from the current > >> > code > >> > > > > base, > >> > > > > > >> > >> > > > > so the main thing, I think, we need to agree is > >> > RQ/RP > >> > > > > > format. > >> > > > > > >> > >> > > > > So how can we start discussion about the concrete > >> > > > > messages > >> > > > > > >> > format? > >> > > > > > >> > >> > > > > Can we take ( > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > >> > > > > > >> > >> > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-ProposedRQ/RPFormat > >> > > > > > >> > >> > > > > ) > >> > > > > > >> > >> > > > > as starting point? > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > We had some doubts earlier whether it worth > >> > > introducing > >> > > > > one > >> > > > > > >> > >> generic > >> > > > > > >> > >> > > Admin > >> > > > > > >> > >> > > > > Request for all commands ( > >> > > > > > >> > >> > > > https://issues.apache.org/jira/browse/KAFKA-1694 > >> > > > > > >> > >> > > > > ) > >> > > > > > >> > >> > > > > but then everybody agreed it would be better to > >> > have > >> > > > > > separate > >> > > > > > >> > >> message > >> > > > > > >> > >> > > for > >> > > > > > >> > >> > > > > each admin command. The Request part is really > >> > > dictated > >> > > > > > from > >> > > > > > >> the > >> > > > > > >> > >> > > command > >> > > > > > >> > >> > > > > (e.g. TopicCommand) arguments itself, so the > >> > proposed > >> > > > > > version > >> > > > > > >> > >> should > >> > > > > > >> > >> > be > >> > > > > > >> > >> > > > > fine (let's put aside for now remarks about > >> > Optional > >> > > > > type, > >> > > > > > >> > >> batching, > >> > > > > > >> > >> > > > > configs normalization - I agree with all of > >> them). > >> > > > > > >> > >> > > > > So the second part is Response. I see there are > >> two > >> > > > cases > >> > > > > > >> here. > >> > > > > > >> > >> > > > > a) "Mutate" requests - Create/Alter/... ; b) > >> "Get" > >> > > > > > requests - > >> > > > > > >> > >> > > > > List/Describe... > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > a) should only hold request result (regardless > >> what > >> > > we > >> > > > > > decide > >> > > > > > >> > >> about > >> > > > > > >> > >> > > > > blocking/non-blocking commands execution). > >> > > > > > >> > >> > > > > Usually we provide error code in response but > >> since > >> > > we > >> > > > > will > >> > > > > > >> use > >> > > > > > >> > >> this > >> > > > > > >> > >> > in > >> > > > > > >> > >> > > > > interactive shell we need some human readable > >> error > >> > > > > > >> description > >> > > > > > >> > - > >> > > > > > >> > >> so > >> > > > > > >> > >> > I > >> > > > > > >> > >> > > > > added errorDesription field where you can at > >> least > >> > > > leave > >> > > > > > >> > >> > > > > exception.getMessage. > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > b) in addition to previous item message should > >> hold > >> > > > > command > >> > > > > > >> > >> specific > >> > > > > > >> > >> > > > > response data. We can discuss in detail each of > >> > them > >> > > > but > >> > > > > > >> let's > >> > > > > > >> > for > >> > > > > > >> > >> > now > >> > > > > > >> > >> > > > > agree about the overall pattern. > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > Thanks, > >> > > > > > >> > >> > > > > Andrii Biletskyi > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > On Fri, Jan 23, 2015 at 6:59 AM, Jay Kreps < > >> > > > > > >> jay.kr...@gmail.com > >> > > > > > >> > > > >> > > > > > >> > >> > > wrote: > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > > Hey Joe, > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > This is great. A few comments on KIP-4 > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 1. This is much needed functionality, but there > >> > > are a > >> > > > > lot > >> > > > > > >> of > >> > > > > > >> > >> the so > >> > > > > > >> > >> > > > let's > >> > > > > > >> > >> > > > > > really think these protocols through. We really > >> > > want > >> > > > to > >> > > > > > >> end up > >> > > > > > >> > >> > with a > >> > > > > > >> > >> > > > set > >> > > > > > >> > >> > > > > > of well thought-out, orthoganol apis. For this > >> > > > reason I > >> > > > > > >> think > >> > > > > > >> > >> it is > >> > > > > > >> > >> > > > > really > >> > > > > > >> > >> > > > > > important to think through the end state even > >> if > >> > > that > >> > > > > > >> includes > >> > > > > > >> > >> APIs > >> > > > > > >> > >> > > we > >> > > > > > >> > >> > > > > > won't implement in the first phase. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 2. Let's please please please wait until we > >> have > >> > > > > switched > >> > > > > > >> the > >> > > > > > >> > >> > server > >> > > > > > >> > >> > > > over > >> > > > > > >> > >> > > > > > to the new java protocol definitions. If we add > >> > > > upteen > >> > > > > > >> more ad > >> > > > > > >> > >> hoc > >> > > > > > >> > >> > > > scala > >> > > > > > >> > >> > > > > > objects that is just generating more work for > >> the > >> > > > > > >> conversion > >> > > > > > >> > we > >> > > > > > >> > >> > know > >> > > > > > >> > >> > > we > >> > > > > > >> > >> > > > > > have to do. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 3. This proposal introduces a new type of > >> > optional > >> > > > > > >> parameter. > >> > > > > > >> > >> This > >> > > > > > >> > >> > is > >> > > > > > >> > >> > > > > > inconsistent with everything else in the > >> protocol > >> > > > where > >> > > > > > we > >> > > > > > >> use > >> > > > > > >> > >> -1 > >> > > > > > >> > >> > or > >> > > > > > >> > >> > > > some > >> > > > > > >> > >> > > > > > other marker value. You could argue either way > >> > but > >> > > > > let's > >> > > > > > >> stick > >> > > > > > >> > >> with > >> > > > > > >> > >> > > > that > >> > > > > > >> > >> > > > > > for consistency. For clients that implemented > >> the > >> > > > > > protocol > >> > > > > > >> in > >> > > > > > >> > a > >> > > > > > >> > >> > > better > >> > > > > > >> > >> > > > > way > >> > > > > > >> > >> > > > > > than our scala code these basic primitives are > >> > hard > >> > > > to > >> > > > > > >> change. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 4. ClusterMetadata: This seems to duplicate > >> > > > > > >> > TopicMetadataRequest > >> > > > > > >> > >> > > which > >> > > > > > >> > >> > > > > has > >> > > > > > >> > >> > > > > > brokers, topics, and partitions. I think we > >> > should > >> > > > > rename > >> > > > > > >> that > >> > > > > > >> > >> > > request > >> > > > > > >> > >> > > > > > ClusterMetadataRequest (or just > >> MetadataRequest) > >> > > and > >> > > > > > >> include > >> > > > > > >> > >> the id > >> > > > > > >> > >> > > of > >> > > > > > >> > >> > > > > the > >> > > > > > >> > >> > > > > > controller. Or are there other things we could > >> > add > >> > > > > here? > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 5. We have a tendency to try to make a lot of > >> > > > requests > >> > > > > > that > >> > > > > > >> > can > >> > > > > > >> > >> > only > >> > > > > > >> > >> > > go > >> > > > > > >> > >> > > > > to > >> > > > > > >> > >> > > > > > particular nodes. This adds a lot of burden for > >> > > > client > >> > > > > > >> > >> > > implementations > >> > > > > > >> > >> > > > > (it > >> > > > > > >> > >> > > > > > sounds easy but each discovery can fail in many > >> > > parts > >> > > > > so > >> > > > > > it > >> > > > > > >> > >> ends up > >> > > > > > >> > >> > > > > being a > >> > > > > > >> > >> > > > > > full state machine to do right). I think we > >> > should > >> > > > > > consider > >> > > > > > >> > >> making > >> > > > > > >> > >> > > > admin > >> > > > > > >> > >> > > > > > commands and ideally as many of the other apis > >> as > >> > > > > > possible > >> > > > > > >> > >> > available > >> > > > > > >> > >> > > on > >> > > > > > >> > >> > > > > all > >> > > > > > >> > >> > > > > > brokers and just redirect to the controller on > >> > the > >> > > > > broker > >> > > > > > >> > side. > >> > > > > > >> > >> > > Perhaps > >> > > > > > >> > >> > > > > > there would be a general way to encapsulate > >> this > >> > > > > > re-routing > >> > > > > > >> > >> > behavior. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 6. We should probably normalize the key value > >> > pairs > >> > > > > used > >> > > > > > >> for > >> > > > > > >> > >> > configs > >> > > > > > >> > >> > > > > rather > >> > > > > > >> > >> > > > > > than embedding a new formatting. So two strings > >> > > > rather > >> > > > > > than > >> > > > > > >> > one > >> > > > > > >> > >> > with > >> > > > > > >> > >> > > an > >> > > > > > >> > >> > > > > > internal equals sign. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 7. Is the postcondition of these APIs that the > >> > > > command > >> > > > > > has > >> > > > > > >> > >> begun or > >> > > > > > >> > >> > > > that > >> > > > > > >> > >> > > > > > the command has been completed? It is a lot > >> more > >> > > > usable > >> > > > > > if > >> > > > > > >> the > >> > > > > > >> > >> > > command > >> > > > > > >> > >> > > > > has > >> > > > > > >> > >> > > > > > been completed so you know that if you create a > >> > > topic > >> > > > > and > >> > > > > > >> then > >> > > > > > >> > >> > > publish > >> > > > > > >> > >> > > > to > >> > > > > > >> > >> > > > > > it you won't get an exception about there being > >> > no > >> > > > such > >> > > > > > >> topic. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 8. Describe topic and list topics duplicate a > >> lot > >> > > of > >> > > > > > stuff > >> > > > > > >> in > >> > > > > > >> > >> the > >> > > > > > >> > >> > > > > metadata > >> > > > > > >> > >> > > > > > request. Is there a reason to give back topics > >> > > marked > >> > > > > for > >> > > > > > >> > >> > deletion? I > >> > > > > > >> > >> > > > > feel > >> > > > > > >> > >> > > > > > like if we just make the post-condition of the > >> > > delete > >> > > > > > >> command > >> > > > > > >> > be > >> > > > > > >> > >> > that > >> > > > > > >> > >> > > > the > >> > > > > > >> > >> > > > > > topic is deleted that will get rid of the need > >> > for > >> > > > this > >> > > > > > >> right? > >> > > > > > >> > >> And > >> > > > > > >> > >> > it > >> > > > > > >> > >> > > > > will > >> > > > > > >> > >> > > > > > be much more intuitive. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 9. Should we consider batching these requests? > >> We > >> > > > have > >> > > > > > >> > generally > >> > > > > > >> > >> > > tried > >> > > > > > >> > >> > > > to > >> > > > > > >> > >> > > > > > allow multiple operations to be batched. My > >> > > suspicion > >> > > > > is > >> > > > > > >> that > >> > > > > > >> > >> > without > >> > > > > > >> > >> > > > > this > >> > > > > > >> > >> > > > > > we will get a lot of code that does something > >> > like > >> > > > > > >> > >> > > > > > for(topic: adminClient.listTopics()) > >> > > > > > >> > >> > > > > > adminClient.describeTopic(topic) > >> > > > > > >> > >> > > > > > this code will work great when you test on 5 > >> > topics > >> > > > but > >> > > > > > >> not do > >> > > > > > >> > >> as > >> > > > > > >> > >> > > well > >> > > > > > >> > >> > > > if > >> > > > > > >> > >> > > > > > you have 50k. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 10. I think we should also discuss how we want > >> to > >> > > > > expose > >> > > > > > a > >> > > > > > >> > >> > > programmatic > >> > > > > > >> > >> > > > > JVM > >> > > > > > >> > >> > > > > > client api for these operations. Currently > >> people > >> > > > rely > >> > > > > on > >> > > > > > >> > >> > AdminUtils > >> > > > > > >> > >> > > > > which > >> > > > > > >> > >> > > > > > is totally sketchy. I think we probably need > >> > > another > >> > > > > > client > >> > > > > > >> > >> under > >> > > > > > >> > >> > > > > clients/ > >> > > > > > >> > >> > > > > > that exposes administrative functionality. We > >> > will > >> > > > need > >> > > > > > >> this > >> > > > > > >> > >> just > >> > > > > > >> > >> > to > >> > > > > > >> > >> > > > > > properly test the new apis, I suspect. We > >> should > >> > > > figure > >> > > > > > out > >> > > > > > >> > that > >> > > > > > >> > >> > API. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > 11. The other information that would be really > >> > > useful > >> > > > > to > >> > > > > > >> get > >> > > > > > >> > >> would > >> > > > > > >> > >> > be > >> > > > > > >> > >> > > > > > information about partitions--how much data is > >> in > >> > > the > >> > > > > > >> > partition, > >> > > > > > >> > >> > what > >> > > > > > >> > >> > > > are > >> > > > > > >> > >> > > > > > the segment offsets, what is the log-end offset > >> > > (i.e. > >> > > > > > last > >> > > > > > >> > >> offset), > >> > > > > > >> > >> > > > what > >> > > > > > >> > >> > > > > is > >> > > > > > >> > >> > > > > > the compaction point, etc. I think that done > >> > right > >> > > > this > >> > > > > > >> would > >> > > > > > >> > be > >> > > > > > >> > >> > the > >> > > > > > >> > >> > > > > > successor to the very awkward OffsetRequest we > >> > have > >> > > > > > today. > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > -Jay > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > On Wed, Jan 21, 2015 at 10:27 PM, Joe Stein < > >> > > > > > >> > >> joe.st...@stealth.ly> > >> > > > > > >> > >> > > > > wrote: > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > > Hi, created a KIP > >> > > > > > >> > >> > > > > > > > >> > > > > > >> > >> > > > > > > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > >> > > > > > >> > >> > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations > >> > > > > > >> > >> > > > > > > > >> > > > > > >> > >> > > > > > > JIRA > >> > > > > https://issues.apache.org/jira/browse/KAFKA-1694 > >> > > > > > >> > >> > > > > > > > >> > > > > > >> > >> > > > > > > /******************************************* > >> > > > > > >> > >> > > > > > > Joe Stein > >> > > > > > >> > >> > > > > > > Founder, Principal Consultant > >> > > > > > >> > >> > > > > > > Big Data Open Source Security LLC > >> > > > > > >> > >> > > > > > > http://www.stealth.ly > >> > > > > > >> > >> > > > > > > Twitter: @allthingshadoop < > >> > > > > > >> > >> > http://www.twitter.com/allthingshadoop > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > > > > ********************************************/ > >> > > > > > >> > >> > > > > > > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> > >> > > > > >> > > > > > >> > >> > > > >> > > > > > >> > >> > > >> > > > > > >> > >> > >> > > > > > >> > >> > >> > > > > > >> > >> > >> > > > > > >> > >> -- > >> > > > > > >> > >> -- Guozhang > >> > > > > > >> > >> > >> > > > > > >> > > > >> > > > > > >> > > > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > >> > > >> > -- > >> > Jeff Holoman > >> > Systems Engineer > >> > > >>