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 >> > >>