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