Got it. Thanks for clarifying!
On Wed, Mar 18, 2015 at 11:54 AM, Andrii Biletskyi <andrii.bilets...@stealth.ly> wrote: > Gwen, > > Yes, looks like KAFKA-1927 will leave TopicMetadataRequest/Response. > But I believe, KIP is still tightly related with KAFKA-1927 since we are > not only > going to update TopicMetadataRequest there but we will introduce a bunch > of new requests too. And it probably makes sense to do those correctly from > scratch - without introducing scala request objects. As I understand you'll > have this common infrastructure code done in KAFKA-1927. > > Thanks, > Andrii Biletskyi > > On Wed, Mar 18, 2015 at 8:38 PM, Gwen Shapira <gshap...@cloudera.com> wrote: > >> On Wed, Mar 18, 2015 at 9:34 AM, Jun Rao <j...@confluent.io> wrote: >> > Andri, >> > >> > Thanks for the summary. >> > >> > 1. I just realized that in order to start working on KAFKA-1927, we will >> > need to merge the changes to OffsetCommitRequest (from 0.8.2) to trunk. >> > This is planned to be done as part of KAFKA-1634. So, we will need >> Guozhang >> > and Joel's help to wrap this up. >> >> I mentioned this in a separate thread, but it may be more relevant here: >> It looks like the SimpleConsumer API exposes TopicMetadataRequest and >> TopicMetadataResponse. >> This means that KAFKA-1927 doesn't remove this duplication. >> >> So I'm not sure we actually need KAFKA-1927 before implementing this KIP. >> This doesn't mean I'm stopping work on KAFKA-1927, but perhaps it >> means we can proceed in parallel? >> >> > 2. Thinking about this a bit more, if the semantic of those "write" >> > requests is async (i.e., after the client gets a response, it just means >> > that the operation is initiated, but not necessarily completed), we don't >> > really need to forward the requests to the controller. Instead, the >> > receiving broker can just write the operation to ZK as the admin command >> > line tool previously does. This will simplify the implementation. >> > >> > 8. There is another implementation detail for describe topic. Ideally, we >> > want to read the topic config from the broker cache, instead of >> ZooKeeper. >> > Currently, every broker reads the topic-level config for all topics. >> > However, it ignores those for topics not hosted on itself. So, we may >> need >> > to change TopicConfigManager a bit so that it caches the configs for all >> > topics. >> > >> > Thanks, >> > >> > Jun >> > >> > >> > On Tue, Mar 17, 2015 at 1:13 PM, Andrii Biletskyi < >> > andrii.bilets...@stealth.ly> wrote: >> > >> >> Guys, >> >> >> >> Thanks for a great discussion! >> >> Here are the actions points: >> >> >> >> 1. Q: Get rid of all scala requests objects, use java protocol >> definitions. >> >> A: Gwen kindly took that (KAFKA-1927). It's important to speed up >> >> review procedure >> >> there since this ticket blocks other important changes. >> >> >> >> 2. Q: Generic re-reroute facility vs client maintaining cluster state. >> >> A: Jay has added pseudo code to KAFKA-1912 - need to consider >> whether >> >> this will be >> >> easy to implement as a server-side feature (comments are >> >> welcomed!). >> >> >> >> 3. Q: Controller field in wire protocol. >> >> A: This might be useful for clients, add this to >> TopicMetadataResponse >> >> (already in KIP). >> >> >> >> 4. Q: Decoupling topic creation from TMR. >> >> A: I will add proposed by Jun solution (using clientId for that) to >> the >> >> KIP. >> >> >> >> 5. Q: Bumping new versions of TMR vs grabbing all protocol changes in >> one >> >> version. >> >> A: It was decided to try to gather all changes to protocol (before >> >> release). >> >> In case of TMR it worth checking: KAFKA-2020 and KIP-13 (quotas) >> >> >> >> 6. Q: JSON lib is needed to deserialize user's input in CLI tool. >> >> A: Use jackson for that, /tools project is a separate jar so >> shouldn't >> >> be a big deal. >> >> >> >> 7. Q: VerifyReassingPartitions vs generic status check command. >> >> A: For long-running requests like reassign partitions *progress* >> check >> >> request is useful, >> >> it makes sense to introduce it. >> >> >> >> Please add, correct me if I missed something. >> >> >> >> Thanks, >> >> Andrii Biletskyi >> >> >> >> On Tue, Mar 17, 2015 at 6:20 PM, Andrii Biletskyi < >> >> andrii.bilets...@stealth.ly> wrote: >> >> >> >> > Joel, >> >> > >> >> > You are right, I removed ClusterMetadata because we have partially >> >> > what we need in TopicMetadata. Also, as Jay pointed out earlier, we >> >> > would like to have "orthogonal" API, but at the same time we need >> >> > to be backward compatible. >> >> > >> >> > But I like your idea and even have some other arguments for this >> option: >> >> > There is also DescribeTopicRequest which was proposed in this KIP, >> >> > it returns topic configs, partitions, replication factor plus >> partition >> >> > ISR, ASR, >> >> > leader replica. The later part is really already there in >> >> > TopicMetadataRequest. >> >> > So again we'll have to add stuff to TMR, not to duplicate some info in >> >> > newly added requests. However, this way we'll end up with "monster" >> >> > request which returns cluster metadata, topic replication and config >> info >> >> > plus partition replication data. Seems logical to split TMR to >> >> > - ClusterMetadata (brokers + controller, maybe smth else) >> >> > - TopicMetadata (topic info + partition details) >> >> > But since current TMR is involved in lots of places (including network >> >> > client, >> >> > as I understand) this might be very serious change and it probably >> makes >> >> > sense to stick with current approach. >> >> > >> >> > Thanks, >> >> > Andrii Biletskyi >> >> > >> >> > >> >> > On Tue, Mar 17, 2015 at 5:29 PM, Joel Koshy <jjkosh...@gmail.com> >> wrote: >> >> > >> >> >> I may be missing some context but hopefully this will also be covered >> >> >> today: I thought the earlier proposal where there was an explicit >> >> >> ClusterMetadata request was clearer and explicit. During the course >> of >> >> >> this thread I think the conclusion was that the main need was for >> >> >> controller information and that can be rolled into the topic metadata >> >> >> response but that seems a bit irrelevant to topic metadata. FWIW I >> >> >> think the full broker-list is also irrelevant to topic metadata, but >> >> >> it is already there and in use. I think there is still room for an >> >> >> explicit ClusterMetadata request since there may be other >> >> >> cluster-level information that we may want to add over time (and that >> >> >> have nothing to do with topic metadata). >> >> >> >> >> >> On Tue, Mar 17, 2015 at 02:45:30PM +0200, Andrii Biletskyi wrote: >> >> >> > Jun, >> >> >> > >> >> >> > 101. Okay, if you say that such use case is important. I also think >> >> >> > using clientId for these purposes is fine - if we already have this >> >> >> field >> >> >> > as part of all Wire protocol messages, why not use that. >> >> >> > I will update KIP-4 page if nobody has other ideas (which may come >> up >> >> >> > during the call today). >> >> >> > >> >> >> > 102.1 Agree, I'll update the KIP accordingly. I think we can add >> new, >> >> >> > fine-grained error codes if some error code received in specific >> case >> >> >> > won't give enough context to return a descriptive error message for >> >> >> user. >> >> >> > >> >> >> > Look forward to discussing all outstanding issues in detail today >> >> during >> >> >> > the call. >> >> >> > >> >> >> > Thanks, >> >> >> > Andrii Biletskyi >> >> >> > >> >> >> > >> >> >> > >> >> >> > On Mon, Mar 16, 2015 at 10:59 PM, Jun Rao <j...@confluent.io> >> wrote: >> >> >> > >> >> >> > > 101. There may be a use case where you only want the topics to be >> >> >> created >> >> >> > > manually by admins. Currently, you can do that by disabling auto >> >> topic >> >> >> > > creation and issue topic creation from the TopicCommand. If we >> >> >> disable auto >> >> >> > > topic creation completely on the broker and don't have a way to >> >> >> distinguish >> >> >> > > between topic creation requests from the regular clients and the >> >> >> admin, we >> >> >> > > can't support manual topic creation any more. I was thinking that >> >> >> another >> >> >> > > way of distinguishing the clients making the topic creation >> requests >> >> >> is >> >> >> > > using clientId. For example, the admin tool can set it to >> something >> >> >> like >> >> >> > > admin and the broker can treat that clientId specially. >> >> >> > > >> >> >> > > Also, there is a related discussion in KAFKA-2020. Currently, we >> do >> >> >> the >> >> >> > > following in TopicMetadataResponse: >> >> >> > > >> >> >> > > 1. If leader is not available, we set the partition level error >> code >> >> >> to >> >> >> > > LeaderNotAvailable. >> >> >> > > 2. If a non-leader replica is not available, we take that replica >> >> out >> >> >> of >> >> >> > > the assigned replica list and isr in the response. As an >> indication >> >> >> for >> >> >> > > doing that, we set the partition level error code to >> >> >> ReplicaNotAvailable. >> >> >> > > >> >> >> > > This has a few problems. First, ReplicaNotAvailable probably >> >> >> shouldn't be >> >> >> > > an error, at least for the normal producer/consumer clients that >> >> just >> >> >> want >> >> >> > > to find out the leader. Second, it can happen that both the >> leader >> >> and >> >> >> > > another replica are not available at the same time. There is no >> >> error >> >> >> code >> >> >> > > to indicate both. Third, even if a replica is not available, it's >> >> >> still >> >> >> > > useful to return its replica id since some clients (e.g. admin >> tool) >> >> >> may >> >> >> > > still make use of it. >> >> >> > > >> >> >> > > One way to address this issue is to always return the replica id >> for >> >> >> > > leader, assigned replicas, and isr regardless of whether the >> >> >> corresponding >> >> >> > > broker is live or not. Since we also return the list of live >> >> brokers, >> >> >> the >> >> >> > > client can figure out whether a leader or a replica is live or >> not >> >> >> and act >> >> >> > > accordingly. This way, we don't need to set the partition level >> >> error >> >> >> code >> >> >> > > when the leader or a replica is not available. This doesn't >> change >> >> >> the wire >> >> >> > > protocol, but does change the semantics. Since we are evolving >> the >> >> >> protocol >> >> >> > > of TopicMetadataRequest here, we can potentially piggyback the >> >> change. >> >> >> > > >> >> >> > > 102.1 For those types of errors due to invalid input, shouldn't >> we >> >> >> just >> >> >> > > guard it at parameter validation time and throw >> >> >> InvalidArgumentException >> >> >> > > without even sending the request to the broker? >> >> >> > > >> >> >> > > Thanks, >> >> >> > > >> >> >> > > Jun >> >> >> > > >> >> >> > > >> >> >> > > On Mon, Mar 16, 2015 at 10:37 AM, Andrii Biletskyi < >> >> >> > > andrii.bilets...@stealth.ly> wrote: >> >> >> > > >> >> >> > > > Jun, >> >> >> > > > >> >> >> > > > Answering your questions: >> >> >> > > > >> >> >> > > > 101. If I understand you correctly, you are saying future >> producer >> >> >> > > versions >> >> >> > > > (which >> >> >> > > > will be ported to TMR_V1) won't be able to automatically create >> >> >> topic (if >> >> >> > > > we >> >> >> > > > unconditionally remove topic creation from there). But we need >> to >> >> >> this >> >> >> > > > preserve logic. >> >> >> > > > Ok, about your proposal: I'm not a big fan too, when it comes >> to >> >> >> > > > differentiating >> >> >> > > > clients directly in protocol schema. And also I'm not sure I >> >> >> understand >> >> >> > > at >> >> >> > > > all why >> >> >> > > > auto.create.topics.enable is a server side configuration. Can >> we >> >> >> > > deprecate >> >> >> > > > this setting >> >> >> > > > in future versions, add this setting to producer and based on >> that >> >> >> upon >> >> >> > > > receiving >> >> >> > > > UnknownTopic create topic explicitly by a separate producer >> call >> >> via >> >> >> > > > adminClient? >> >> >> > > > >> >> >> > > > 102.1. Hm, yes. It's because we want to support batching and at >> >> the >> >> >> same >> >> >> > > > time we >> >> >> > > > want to give descriptive error messages for clients. Since >> >> >> AdminClient >> >> >> > > > holds the context >> >> >> > > > to construct such messages (e.g. AdminClient layer can know >> that >> >> >> > > > InvalidArgumentsCode >> >> >> > > > means two cases: either invalid number - e.g. -1; or >> >> >> replication-factor >> >> >> > > was >> >> >> > > > provided while >> >> >> > > > partitions argument wasn't) - I wrapped responses in >> Exceptions. >> >> >> But I'm >> >> >> > > > open to any >> >> >> > > > other ideas, this was just initial version. >> >> >> > > > 102.2. Yes, I agree. I'll change that to probably some other >> dto. >> >> >> > > > >> >> >> > > > Thanks, >> >> >> > > > Andrii Biletskyi >> >> >> > > > >> >> >> > > > On Fri, Mar 13, 2015 at 7:16 PM, Jun Rao <j...@confluent.io> >> >> wrote: >> >> >> > > > >> >> >> > > > > Andrii, >> >> >> > > > > >> >> >> > > > > 101. That's what I was thinking too, but it may not be that >> >> >> simple. In >> >> >> > > > > TopicMetadataRequest_V1, >> >> >> > > > > we can let it not trigger auto topic creation. Then, in the >> >> >> producer >> >> >> > > > side, >> >> >> > > > > if it gets an UnknownTopicException, it can explicitly issue >> a >> >> >> > > > > createTopicRequest for auto topic creation. On the consumer >> >> side, >> >> >> it >> >> >> > > will >> >> >> > > > > never issue createTopicRequest. This works when auto topic >> >> >> creation is >> >> >> > > > > enabled on the broker side. However, I am not sure how things >> >> >> will work >> >> >> > > > > when auto topic creation is disabled on the broker side. In >> this >> >> >> case, >> >> >> > > we >> >> >> > > > > want to have a way to manually create a topic, potentially >> >> through >> >> >> > > admin >> >> >> > > > > commands. However, then we need a way to distinguish >> >> >> createTopicRequest >> >> >> > > > > issued from the producer clients and the admin tools. May be >> we >> >> >> can >> >> >> > > add a >> >> >> > > > > new field in createTopicRequest and set it differently in the >> >> >> producer >> >> >> > > > > client and the admin client. However, I am not sure if that's >> >> the >> >> >> best >> >> >> > > > > approach. >> >> >> > > > > >> >> >> > > > > 2. Yes, refactoring existing requests is a non-trivial >> amount of >> >> >> work. >> >> >> > > I >> >> >> > > > > posted some comments in KAFKA-1927. We will probably have to >> fix >> >> >> > > > KAFKA-1927 >> >> >> > > > > first, before adding the new logic in KAFKA-1694. Otherwise, >> the >> >> >> > > changes >> >> >> > > > > will be too big. >> >> >> > > > > >> >> >> > > > > 102. About the AdminClient: >> >> >> > > > > 102.1. It's a bit weird that we return exception in the api. >> It >> >> >> seems >> >> >> > > > that >> >> >> > > > > we should either return error code or throw an exception when >> >> >> getting >> >> >> > > the >> >> >> > > > > response state. >> >> >> > > > > 102.2. We probably shouldn't explicitly use the request >> object >> >> in >> >> >> the >> >> >> > > > api. >> >> >> > > > > Not every request evolution requires an api change. >> >> >> > > > > >> >> >> > > > > Thanks, >> >> >> > > > > >> >> >> > > > > Jun >> >> >> > > > > >> >> >> > > > > >> >> >> > > > > On Fri, Mar 13, 2015 at 4:08 AM, Andrii Biletskyi < >> >> >> > > > > andrii.bilets...@stealth.ly> wrote: >> >> >> > > > > >> >> >> > > > > > Jun, >> >> >> > > > > > >> >> >> > > > > > Thanks for you comments. Answers inline: >> >> >> > > > > > >> >> >> > > > > > 100. There are a few fields such as ReplicaAssignment, >> >> >> > > > > > > ReassignPartitionRequest, >> >> >> > > > > > > and PartitionsSerialized that are represented as a >> string, >> >> but >> >> >> > > > contain >> >> >> > > > > > > composite structures in json. Could we flatten them out >> >> >> directly in >> >> >> > > > the >> >> >> > > > > > > protocol definition as arrays/records? >> >> >> > > > > > >> >> >> > > > > > >> >> >> > > > > > Yes, now with Admin Client this looks a bit weird. My >> initial >> >> >> > > > motivation >> >> >> > > > > > was: >> >> >> > > > > > ReassignPartitionCommand accepts input in json, we want to >> >> >> remain >> >> >> > > > tools' >> >> >> > > > > > interfaces unchanged, where possible. >> >> >> > > > > > If we port it to deserialized format, in CLI (/tools >> project) >> >> >> we will >> >> >> > > > > have >> >> >> > > > > > to add some >> >> >> > > > > > json library since /tools is written in java and we'll >> need to >> >> >> > > > > deserialize >> >> >> > > > > > json file >> >> >> > > > > > provided by a user. Can we quickly agree on what this >> library >> >> >> should >> >> >> > > be >> >> >> > > > > > (Jackson, GSON, whatever)? >> >> >> > > > > > >> >> >> > > > > > 101. Does TopicMetadataRequest v1 still trigger auto topic >> >> >> creation? >> >> >> > > > This >> >> >> > > > > > > will be a bit weird now that we have a separate topic >> >> >> creation api. >> >> >> > > > > Have >> >> >> > > > > > > you thought about how the new createTopicRequest and >> >> >> > > > > TopicMetadataRequest >> >> >> > > > > > > v1 will be used in the producer/consumer client, in >> addition >> >> >> to >> >> >> > > admin >> >> >> > > > > > > tools? For example, ideally, we don't want >> >> >> TopicMetadataRequest >> >> >> > > from >> >> >> > > > > the >> >> >> > > > > > > consumer to trigger auto topic creation. >> >> >> > > > > > >> >> >> > > > > > >> >> >> > > > > > I agree, this strange logic should be fixed. I'm not >> confident >> >> >> in >> >> >> > > this >> >> >> > > > > > Kafka part so >> >> >> > > > > > correct me if I'm wrong, but it doesn't look like a hard >> thing >> >> >> to >> >> >> > > do, I >> >> >> > > > > > think we can >> >> >> > > > > > leverage AdminClient for that in Producer and >> unconditionally >> >> >> remove >> >> >> > > > > topic >> >> >> > > > > > creation from the TopicMetadataRequest_V1. >> >> >> > > > > > >> >> >> > > > > > 2. I think Jay meant getting rid of scala classes >> >> >> > > > > > > like HeartbeatRequestAndHeader and >> >> >> HeartbeatResponseAndHeader. We >> >> >> > > did >> >> >> > > > > > that >> >> >> > > > > > > as a stop-gap thing when adding the new requests for the >> >> >> consumers. >> >> >> > > > > > > However, the long term plan is to get rid of all those >> and >> >> >> just >> >> >> > > reuse >> >> >> > > > > the >> >> >> > > > > > > java request/response in the client. Since this KIP >> proposes >> >> >> to >> >> >> > > add a >> >> >> > > > > > > significant number of new requests, perhaps we should >> bite >> >> the >> >> >> > > bullet >> >> >> > > > > to >> >> >> > > > > > > clean up the existing scala requests first before adding >> new >> >> >> ones? >> >> >> > > > > > > >> >> >> > > > > > >> >> >> > > > > > Yes, looks like I misunderstood the point of >> >> >> ...RequestAndHeader. >> >> >> > > > Okay, I >> >> >> > > > > > will >> >> >> > > > > > rework that. The only thing is that I don't see any example >> >> how >> >> >> it >> >> >> > > was >> >> >> > > > > done >> >> >> > > > > > for at >> >> >> > > > > > least one existing protocol message. Thus, as I >> understand, I >> >> >> have to >> >> >> > > > > think >> >> >> > > > > > how we >> >> >> > > > > > are going to do it. >> >> >> > > > > > Re porting all existing RQ/RP in this patch. Sounds >> >> reasonable, >> >> >> but >> >> >> > > if >> >> >> > > > > it's >> >> >> > > > > > an *obligatory* >> >> >> > > > > > requirement to have Admin KIP done, I'm afraid this can be >> a >> >> >> serious >> >> >> > > > > > blocker for us. >> >> >> > > > > > There are 13 protocol messages and all that would require >> not >> >> >> only >> >> >> > > unit >> >> >> > > > > > tests but quite >> >> >> > > > > > intensive manual testing, no? I'm afraid I'm not the right >> guy >> >> >> to >> >> >> > > cover >> >> >> > > > > > pretty much all >> >> >> > > > > > Kafka core internals :). Let me know your thoughts on this >> >> >> item. Btw >> >> >> > > > > there >> >> >> > > > > > is a ticket to >> >> >> > > > > > follow-up this issue ( >> >> >> > > https://issues.apache.org/jira/browse/KAFKA-2006 >> >> >> > > > ). >> >> >> > > > > > >> >> >> > > > > > Thanks, >> >> >> > > > > > Andrii Biletskyi >> >> >> > > > > > >> >> >> > > > > > >> >> >> > > > > > On Fri, Mar 13, 2015 at 6:40 AM, Jun Rao <j...@confluent.io >> > >> >> >> wrote: >> >> >> > > > > > >> >> >> > > > > > > Andrii, >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > > > > > > A few more comments. >> >> >> > > > > > > >> >> >> > > > > > > 100. There are a few fields such as ReplicaAssignment, >> >> >> > > > > > > ReassignPartitionRequest, >> >> >> > > > > > > and PartitionsSerialized that are represented as a >> string, >> >> but >> >> >> > > > contain >> >> >> > > > > > > composite structures in json. Could we flatten them out >> >> >> directly in >> >> >> > > > the >> >> >> > > > > > > protocol definition as arrays/records? >> >> >> > > > > > > >> >> >> > > > > > > 101. Does TopicMetadataRequest v1 still trigger auto >> topic >> >> >> > > creation? >> >> >> > > > > This >> >> >> > > > > > > will be a bit weird now that we have a separate topic >> >> >> creation api. >> >> >> > > > > Have >> >> >> > > > > > > you thought about how the new createTopicRequest and >> >> >> > > > > TopicMetadataRequest >> >> >> > > > > > > v1 will be used in the producer/consumer client, in >> addition >> >> >> to >> >> >> > > admin >> >> >> > > > > > > tools? For example, ideally, we don't want >> >> >> TopicMetadataRequest >> >> >> > > from >> >> >> > > > > the >> >> >> > > > > > > consumer to trigger auto topic creation. >> >> >> > > > > > > >> >> >> > > > > > > 2. I think Jay meant getting rid of scala classes >> >> >> > > > > > > like HeartbeatRequestAndHeader and >> >> >> HeartbeatResponseAndHeader. We >> >> >> > > did >> >> >> > > > > > that >> >> >> > > > > > > as a stop-gap thing when adding the new requests for the >> >> >> consumers. >> >> >> > > > > > > However, the long term plan is to get rid of all those >> and >> >> >> just >> >> >> > > reuse >> >> >> > > > > the >> >> >> > > > > > > java request/response in the client. Since this KIP >> proposes >> >> >> to >> >> >> > > add a >> >> >> > > > > > > significant number of new requests, perhaps we should >> bite >> >> the >> >> >> > > bullet >> >> >> > > > > to >> >> >> > > > > > > clean up the existing scala requests first before adding >> new >> >> >> ones? >> >> >> > > > > > > >> >> >> > > > > > > Thanks, >> >> >> > > > > > > >> >> >> > > > > > > Jun >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > > > > > > On Thu, Mar 12, 2015 at 3:37 PM, Andrii Biletskyi < >> >> >> > > > > > > andrii.bilets...@stealth.ly> wrote: >> >> >> > > > > > > >> >> >> > > > > > > > Hi, >> >> >> > > > > > > > >> >> >> > > > > > > > As said above - I list again all comments from this >> thread >> >> >> so we >> >> >> > > > > > > > can see what's left and finalize all pending issues. >> >> >> > > > > > > > >> >> >> > > > > > > > Comments from Jay: >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Definitely behind this. Would appreciate if there >> are >> >> >> concrete >> >> >> > > > > > > comments >> >> >> > > > > > > > how this can be improved. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Fixed in the latest patch - removed scala protocol >> >> >> classes. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Fixed in the latest patch - removed MaybeOf type and >> >> >> changed >> >> >> > > > > > protocol >> >> >> > > > > > > > accordingly. >> >> >> > > > > > > > >> >> >> > > > > > > > 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? >> >> >> > > > > > > > >> >> >> > > > > > > > A: I agree. Updated the KIP. Let's extends >> TopicMetadata >> >> to >> >> >> > > > version 2 >> >> >> > > > > > and >> >> >> > > > > > > > include controller. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: It's a very interesting idea, but seems there are >> some >> >> >> > > concerns >> >> >> > > > > > about >> >> >> > > > > > > > this >> >> >> > > > > > > > feature (like performance considerations, how this will >> >> >> > > complicate >> >> >> > > > > > server >> >> >> > > > > > > > etc). >> >> >> > > > > > > > I believe this shouldn't be a blocker. If this feature >> is >> >> >> > > > implemented >> >> >> > > > > > at >> >> >> > > > > > > > some >> >> >> > > > > > > > point it won't affect Admin changes - at least no >> changes >> >> to >> >> >> > > public >> >> >> > > > > API >> >> >> > > > > > > > will be required. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Fixed in the latest patch - normalized configs and >> >> >> changed >> >> >> > > > > protocol >> >> >> > > > > > > > accordingly. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: For long running requests (like reassign >> partitions) - >> >> >> the >> >> >> > > post >> >> >> > > > > > > > condition is >> >> >> > > > > > > > command has begun - so we don't block the client. In >> case >> >> >> of your >> >> >> > > > > > > example - >> >> >> > > > > > > > topic commands, this will be refactored and topic >> commands >> >> >> will >> >> >> > > be >> >> >> > > > > > > executed >> >> >> > > > > > > > immediately, since the Controller will serve Admin >> >> requests >> >> >> > > > > > > > (follow-up ticket KAFKA-1777). >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Fixed in the latest patch - removed topics marked >> for >> >> >> deletion >> >> >> > > > in >> >> >> > > > > > > > ListTopicsRequest. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Updated the KIP - please check "Topic Admin Schema" >> >> >> section. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Updated the KIP - please check "Admin Client" >> section >> >> >> with an >> >> >> > > > > > initial >> >> >> > > > > > > > API proposal. >> >> >> > > > > > > > >> >> >> > > > > > > > 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: I removed ConsumerGroupOffsetsRequest in the latest >> >> >> patch. I >> >> >> > > > > believe >> >> >> > > > > > > > this should >> >> >> > > > > > > > be resolved in a separate KIP / jira ticket. >> >> >> > > > > > > > >> >> >> > > > > > > > 12. 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. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Updated the KIP - please check "Protocol Errors" >> >> >> section. I >> >> >> > > > added >> >> >> > > > > > the >> >> >> > > > > > > > comprehensive, fine-grained list of error codes. >> >> >> > > > > > > > >> >> >> > > > > > > > Comments from Guozhang: >> >> >> > > > > > > > 13. Describe topic request: it would be great to go >> beyond >> >> >> just >> >> >> > > > > > batching >> >> >> > > > > > > on >> >> >> > > > > > > > topic name regex for this request. For example, a very >> >> >> common use >> >> >> > > > > case >> >> >> > > > > > of >> >> >> > > > > > > > the topic command is to list all topics whose config >> A's >> >> >> value is >> >> >> > > > B. >> >> >> > > > > > With >> >> >> > > > > > > > topic name regex then we have to first retrieve __all__ >> >> >> topics's >> >> >> > > > > > > > description info and then filter at the client end, >> which >> >> >> will >> >> >> > > be a >> >> >> > > > > > huge >> >> >> > > > > > > > burden on ZK. >> >> >> > > > > > > > AND >> >> >> > > > > > > > 14. Config K-Vs in create topic: this is related to the >> >> >> previous >> >> >> > > > > point; >> >> >> > > > > > > > maybe we can add another metadata K-V or just a >> metadata >> >> >> string >> >> >> > > > along >> >> >> > > > > > > side >> >> >> > > > > > > > with config K-V in create topic like we did for offset >> >> >> commit >> >> >> > > > > request. >> >> >> > > > > > > This >> >> >> > > > > > > > field can be quite useful in storing information like >> >> >> "owner" of >> >> >> > > > the >> >> >> > > > > > > topic >> >> >> > > > > > > > who issue the create command, etc, which is quite >> >> important >> >> >> for a >> >> >> > > > > > > > multi-tenant setting. Then in the describe topic >> request >> >> we >> >> >> can >> >> >> > > > also >> >> >> > > > > > > batch >> >> >> > > > > > > > on regex of the metadata field. >> >> >> > > > > > > > >> >> >> > > > > > > > A: As discussed it is very interesting but can be >> >> >> implemented >> >> >> > > later >> >> >> > > > > > after >> >> >> > > > > > > > we have some basic functionality there. >> >> >> > > > > > > > >> >> >> > > > > > > > 15. Today all the admin operations are async in the >> sense >> >> >> that >> >> >> > > > > command >> >> >> > > > > > > will >> >> >> > > > > > > > return once it is written in ZK, and that is why we >> need >> >> >> extra >> >> >> > > > > > > verification >> >> >> > > > > > > > like testUtil.waitForTopicCreated() / verify partition >> >> >> > > reassignment >> >> >> > > > > > > > request, etc. With admin requests we could add a flag >> to >> >> >> enable / >> >> >> > > > > > disable >> >> >> > > > > > > > synchronous requests; when it is turned on, the >> response >> >> >> will not >> >> >> > > > > > return >> >> >> > > > > > > > until the request has been completed. And for async >> >> >> requests we >> >> >> > > can >> >> >> > > > > > add a >> >> >> > > > > > > > "token" field in the response, and then only need a >> >> general >> >> >> > > "admin >> >> >> > > > > > > > verification request" with the given token to check if >> the >> >> >> async >> >> >> > > > > > request >> >> >> > > > > > > > has been completed. >> >> >> > > > > > > > >> >> >> > > > > > > > A: I see your point. My idea was to provide specific >> >> >> > > > Verify...Request >> >> >> > > > > > per >> >> >> > > > > > > > each >> >> >> > > > > > > > long running request, where needed. We can do it the >> way >> >> you >> >> >> > > > suggest. >> >> >> > > > > > The >> >> >> > > > > > > > only >> >> >> > > > > > > > concern is that introducing a token we again will make >> >> >> schema >> >> >> > > > > > "dynamic". >> >> >> > > > > > > We >> >> >> > > > > > > > wanted >> >> >> > > > > > > > to do similar thing introducing single AdminRequest for >> >> all >> >> >> topic >> >> >> > > > > > > commands >> >> >> > > > > > > > but rejected >> >> >> > > > > > > > this idea because we wanted to have schema defined. So >> >> this >> >> >> is >> >> >> > > > more a >> >> >> > > > > > > > choice between: >> >> >> > > > > > > > a) have fixed schema but introduce each time new >> >> >> Verify...Request >> >> >> > > > for >> >> >> > > > > > > > long-running requests >> >> >> > > > > > > > b) use one request for verification but generalize it >> with >> >> >> token >> >> >> > > > > > > > I'm fine with whatever decision community come to. Just >> >> let >> >> >> me >> >> >> > > know >> >> >> > > > > > your >> >> >> > > > > > > > thoughts. >> >> >> > > > > > > > >> >> >> > > > > > > > Comment from Gwen: >> >> >> > > > > > > > 16. Specifically for ownership, I think the plan is to >> add >> >> >> ACL >> >> >> > > (it >> >> >> > > > > > sounds >> >> >> > > > > > > > like you are describing ACL) via an external system >> >> (Argus, >> >> >> > > > Sentry). >> >> >> > > > > > > > I remember KIP-11 described this, but I can't find the >> KIP >> >> >> any >> >> >> > > > > longer. >> >> >> > > > > > > > >> >> >> > > > > > > > A: Okay, no problem. Not sure though how we are going >> to >> >> >> handle >> >> >> > > it. >> >> >> > > > > > Wait >> >> >> > > > > > > > which KIP >> >> >> > > > > > > > will be committed first and include changes to >> >> >> TopicMetadata from >> >> >> > > > the >> >> >> > > > > > > later >> >> >> > > > > > > > one? >> >> >> > > > > > > > Anyway, I added this note to "Open Questions" section >> so >> >> we >> >> >> don't >> >> >> > > > > miss >> >> >> > > > > > > this >> >> >> > > > > > > > piece. >> >> >> > > > > > > > >> >> >> > > > > > > > Thanks, >> >> >> > > > > > > > Andrii Biletskyi >> >> >> > > > > > > > >> >> >> > > > > > > > On Fri, Mar 13, 2015 at 12:34 AM, Andrii Biletskyi < >> >> >> > > > > > > > andrii.bilets...@stealth.ly> wrote: >> >> >> > > > > > > > >> >> >> > > > > > > > > Hi all, >> >> >> > > > > > > > > >> >> >> > > > > > > > > Today I uploaded the patch that covers some of the >> >> >> discussed >> >> >> > > and >> >> >> > > > > > agreed >> >> >> > > > > > > > > items: >> >> >> > > > > > > > > - removed MaybeOf optional type >> >> >> > > > > > > > > - switched to java protocol definitions >> >> >> > > > > > > > > - simplified messages (normalized configs, removed >> topic >> >> >> marked >> >> >> > > > for >> >> >> > > > > > > > > deletion) >> >> >> > > > > > > > > >> >> >> > > > > > > > > I also updated the KIP-4 with respective changes and >> >> >> wrote down >> >> >> > > > my >> >> >> > > > > > > > > proposal for >> >> >> > > > > > > > > pending items: >> >> >> > > > > > > > > - Batch Admin Operations -> updated Wire Protocol >> schema >> >> >> > > proposal >> >> >> > > > > > > > > - Remove ClusterMetadata -> changed to extend >> >> >> > > > TopicMetadataRequest >> >> >> > > > > > > > > - Admin Client -> updated my initial proposal to >> reflect >> >> >> > > batching >> >> >> > > > > > > > > - Error codes -> proposed fine-grained error code >> >> instead >> >> >> of >> >> >> > > > > > > > > AdminRequestFailed >> >> >> > > > > > > > > >> >> >> > > > > > > > > I will also send a separate email to cover all >> comments >> >> >> from >> >> >> > > this >> >> >> > > > > > > thread. >> >> >> > > > > > > > > >> >> >> > > > > > > > > Thanks, >> >> >> > > > > > > > > Andrii Biletskyi >> >> >> > > > > > > > > >> >> >> > > > > > > > > >> >> >> > > > > > > > > On Thu, Mar 12, 2015 at 9:26 PM, Gwen Shapira < >> >> >> > > > > gshap...@cloudera.com >> >> >> > > > > > > >> >> >> > > > > > > > > wrote: >> >> >> > > > > > > > > >> >> >> > > > > > > > >> Found KIP-11 ( >> >> >> > > > > > > > >> >> >> >> > > > > > > > >> >> >> > > > > > > >> >> >> > > > > > >> >> >> > > > > >> >> >> > > > >> >> >> > > >> >> >> >> >> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface >> >> >> > > > > > > > >> ) >> >> >> > > > > > > > >> It actually specifies changes to the Metadata >> protocol, >> >> >> so >> >> >> > > > making >> >> >> > > > > > sure >> >> >> > > > > > > > >> both KIPs are consistent in this regard will be >> good. >> >> >> > > > > > > > >> >> >> >> > > > > > > > >> On Thu, Mar 12, 2015 at 12:21 PM, Gwen Shapira < >> >> >> > > > > > gshap...@cloudera.com >> >> >> > > > > > > > >> >> >> > > > > > > > >> wrote: >> >> >> > > > > > > > >> > Specifically for ownership, I think the plan is to >> >> add >> >> >> ACL >> >> >> > > (it >> >> >> > > > > > > sounds >> >> >> > > > > > > > >> > like you are describing ACL) via an external >> system >> >> >> (Argus, >> >> >> > > > > > Sentry). >> >> >> > > > > > > > >> > I remember KIP-11 described this, but I can't find >> >> the >> >> >> KIP >> >> >> > > any >> >> >> > > > > > > longer. >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > Regardless, I think KIP-4 focuses on getting >> >> >> information >> >> >> > > that >> >> >> > > > > > > already >> >> >> > > > > > > > >> > exists from Kafka brokers, not on adding >> information >> >> >> that >> >> >> > > > > perhaps >> >> >> > > > > > > > >> > should exist but doesn't yet? >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > Gwen >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > >> >> >> > > > > > > > >> > On Thu, Mar 12, 2015 at 6:37 AM, Guozhang Wang < >> >> >> > > > > > wangg...@gmail.com> >> >> >> > > > > > > > >> wrote: >> >> >> > > > > > > > >> >> Folks, >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Just want to elaborate a bit more on the >> >> create-topic >> >> >> > > > metadata >> >> >> > > > > > and >> >> >> > > > > > > > >> batching >> >> >> > > > > > > > >> >> describe-topic based on config / metadata in my >> >> >> previous >> >> >> > > > email >> >> >> > > > > as >> >> >> > > > > > > we >> >> >> > > > > > > > >> work >> >> >> > > > > > > > >> >> on KAFKA-1694. The main motivation is to have >> some >> >> >> sort of >> >> >> > > > > topic >> >> >> > > > > > > > >> management >> >> >> > > > > > > > >> >> mechanisms, which I think is quite important in a >> >> >> > > > multi-tenant >> >> >> > > > > / >> >> >> > > > > > > > cloud >> >> >> > > > > > > > >> >> architecture: today anyone can create topics in a >> >> >> shared >> >> >> > > > Kafka >> >> >> > > > > > > > >> cluster, but >> >> >> > > > > > > > >> >> there is no concept or "ownership" of topics that >> >> are >> >> >> > > created >> >> >> > > > > by >> >> >> > > > > > > > >> different >> >> >> > > > > > > > >> >> users. For example, at LinkedIn we basically >> >> >> distinguish >> >> >> > > > topic >> >> >> > > > > > > owners >> >> >> > > > > > > > >> via >> >> >> > > > > > > > >> >> some casual topic name prefix, which is a bit >> >> awkward >> >> >> and >> >> >> > > > does >> >> >> > > > > > not >> >> >> > > > > > > > fly >> >> >> > > > > > > > >> as >> >> >> > > > > > > > >> >> we scale our customers. It would be great to use >> >> >> > > > > describe-topics >> >> >> > > > > > > such >> >> >> > > > > > > > >> as: >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Describe all topics that is created by me. >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Describe all topics whose retention time is >> >> overriden >> >> >> to X. >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Describe all topics whose writable group include >> >> user >> >> >> Y >> >> >> > > (this >> >> >> > > > > is >> >> >> > > > > > > > >> related to >> >> >> > > > > > > > >> >> authorization), etc.. >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> One possible way to achieve this is to add a >> >> metadata >> >> >> file >> >> >> > > in >> >> >> > > > > the >> >> >> > > > > > > > >> >> create-topic request, whose value will also be >> >> >> written ZK >> >> >> > > as >> >> >> > > > we >> >> >> > > > > > > > create >> >> >> > > > > > > > >> the >> >> >> > > > > > > > >> >> topic; then describe-topics can choose to batch >> >> topics >> >> >> > > based >> >> >> > > > on >> >> >> > > > > > 1) >> >> >> > > > > > > > name >> >> >> > > > > > > > >> >> regex, 2) config K-V matching, 3) metadata regex, >> >> etc. >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Thoughts? >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> Guozhang >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >> On Thu, Mar 5, 2015 at 4:37 PM, Guozhang Wang < >> >> >> > > > > > wangg...@gmail.com> >> >> >> > > > > > > > >> wrote: >> >> >> > > > > > > > >> >> >> >> >> > > > > > > > >> >>> Thanks for the updated wiki. A few comments >> below: >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> 1. Error description in response: I think if >> some >> >> >> > > errorCode >> >> >> > > > > > could >> >> >> > > > > > > > >> indicate >> >> >> > > > > > > > >> >>> several different error cases then we should >> really >> >> >> change >> >> >> > > > it >> >> >> > > > > to >> >> >> > > > > > > > >> multiple >> >> >> > > > > > > > >> >>> codes. In general the errorCode itself would be >> >> >> precise >> >> >> > > and >> >> >> > > > > > > > >> sufficient for >> >> >> > > > > > > > >> >>> describing the server side errors. >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> 2. Describe topic request: it would be great to >> go >> >> >> beyond >> >> >> > > > just >> >> >> > > > > > > > >> batching on >> >> >> > > > > > > > >> >>> topic name regex for this request. For example, >> a >> >> >> very >> >> >> > > > common >> >> >> > > > > > use >> >> >> > > > > > > > >> case of >> >> >> > > > > > > > >> >>> the topic command is to list all topics whose >> >> config >> >> >> A's >> >> >> > > > value >> >> >> > > > > > is >> >> >> > > > > > > B. >> >> >> > > > > > > > >> With >> >> >> > > > > > > > >> >>> topic name regex then we have to first retrieve >> >> >> __all__ >> >> >> > > > > topics's >> >> >> > > > > > > > >> >>> description info and then filter at the client >> end, >> >> >> which >> >> >> > > > will >> >> >> > > > > > be >> >> >> > > > > > > a >> >> >> > > > > > > > >> huge >> >> >> > > > > > > > >> >>> burden on ZK. >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> 3. Config K-Vs in create topic: this is related >> to >> >> >> the >> >> >> > > > > previous >> >> >> > > > > > > > point; >> >> >> > > > > > > > >> >>> maybe we can add another metadata K-V or just a >> >> >> metadata >> >> >> > > > > string >> >> >> > > > > > > > along >> >> >> > > > > > > > >> side >> >> >> > > > > > > > >> >>> with config K-V in create topic like we did for >> >> >> offset >> >> >> > > > commit >> >> >> > > > > > > > >> request. This >> >> >> > > > > > > > >> >>> field can be quite useful in storing information >> >> like >> >> >> > > > "owner" >> >> >> > > > > of >> >> >> > > > > > > the >> >> >> > > > > > > > >> topic >> >> >> > > > > > > > >> >>> who issue the create command, etc, which is >> quite >> >> >> > > important >> >> >> > > > > for >> >> >> > > > > > a >> >> >> > > > > > > > >> >>> multi-tenant setting. Then in the describe topic >> >> >> request >> >> >> > > we >> >> >> > > > > can >> >> >> > > > > > > also >> >> >> > > > > > > > >> batch >> >> >> > > > > > > > >> >>> on regex of the metadata field. >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> 4. Today all the admin operations are async in >> the >> >> >> sense >> >> >> > > > that >> >> >> > > > > > > > command >> >> >> > > > > > > > >> will >> >> >> > > > > > > > >> >>> return once it is written in ZK, and that is >> why we >> >> >> need >> >> >> > > > extra >> >> >> > > > > > > > >> verification >> >> >> > > > > > > > >> >>> like testUtil.waitForTopicCreated() / verify >> >> >> partition >> >> >> > > > > > > reassignment >> >> >> > > > > > > > >> >>> request, etc. With admin requests we could add a >> >> >> flag to >> >> >> > > > > enable >> >> >> > > > > > / >> >> >> > > > > > > > >> disable >> >> >> > > > > > > > >> >>> synchronous requests; when it is turned on, the >> >> >> response >> >> >> > > > will >> >> >> > > > > > not >> >> >> > > > > > > > >> return >> >> >> > > > > > > > >> >>> until the request has been completed. And for >> async >> >> >> > > requests >> >> >> > > > > we >> >> >> > > > > > > can >> >> >> > > > > > > > >> add a >> >> >> > > > > > > > >> >>> "token" field in the response, and then only >> need a >> >> >> > > general >> >> >> > > > > > "admin >> >> >> > > > > > > > >> >>> verification request" with the given token to >> check >> >> >> if the >> >> >> > > > > async >> >> >> > > > > > > > >> request >> >> >> > > > > > > > >> >>> has been completed. >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> 5. +1 for extending Metadata request to include >> >> >> > > controller / >> >> >> > > > > > > > >> coordinator >> >> >> > > > > > > > >> >>> information, and then we can remove the >> >> >> ConsumerMetadata / >> >> >> > > > > > > > >> ClusterMetadata >> >> >> > > > > > > > >> >>> requests. >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> Guozhang >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>> On Tue, Mar 3, 2015 at 10:23 AM, Joel Koshy < >> >> >> > > > > > jjkosh...@gmail.com> >> >> >> > > > > > > > >> wrote: >> >> >> > > > > > > > >> >>> >> >> >> > > > > > > > >> >>>> 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 >> >> >> > > > >> >> > >> >> > ... >> >> > >> >> > [Message clipped] >> >> >>