Andrii, I think you are right. It seems that only ReassignPartitions needs a separate verification request.
Thanks, Jun On Thu, Mar 19, 2015 at 9:22 AM, Andrii Biletskyi < andrii.bilets...@stealth.ly> wrote: > Guys, > I like this idea too. Let's stick with that. I'll update KIP accordingly. > > I was also thinking we can avoid adding dedicated status check > requests for topic commands. - We have everything in DescribeTopic > for that! E.g.: > User issued CreateTopic - to check the status client sends DescribeTopic > and checks whether is something returned for that topic. The same for > alteration, deletion. > Btw, PreferredReplica status can be also checked with DescribeTopicRequest > (head of assigned replicas list == leader). > For ReassignPartitions as discussed we'll need to have a separate Verify... > request. > > Thanks, > Andrii Biletskyi > > > On Thu, Mar 19, 2015 at 6:03 PM, Guozhang Wang <wangg...@gmail.com> wrote: > > > +1 on broker writing to ZK for async handling. I was thinking that in the > > end state the admin requests would be eventually sent to controller > either > > through re-routing or clients discovering them, instead of letting > > controller listen on ZK admin path. But thinking about it a second time, > I > > think it is actually simpler to let controller manage > > incoming queued-up admin requests through ZK. > > > > Guozhang > > > > > > On Wed, Mar 18, 2015 at 4:16 PM, Joel Koshy <jjkosh...@gmail.com> wrote: > > > > > +1 as well. I think it helps to keep the rerouting approach orthogonal > > > to this KIP. > > > > > > On Wed, Mar 18, 2015 at 03:40:48PM -0700, Jay Kreps wrote: > > > > I'm +1 on Jun's suggestion as long as it can work for all the > requests. > > > > > > > > On Wed, Mar 18, 2015 at 3:35 PM, Jun Rao <j...@confluent.io> wrote: > > > > > > > > > Andrii, > > > > > > > > > > I think we agreed on the following. > > > > > > > > > > (a) Admin requests can be sent to and handled by any broker. > > > > > (b) Admin requests are processed asynchronously, at least for now. > > > That is, > > > > > when the client gets a response, it just means that the request is > > > > > initiated, but not necessarily completed. Then, it's up to the > client > > > to > > > > > issue another request to check the status for completion. > > > > > > > > > > To support (a), we were thinking of doing request forwarding to the > > > > > controller (utilizing KAFKA-1912). I am making an alternative > > proposal. > > > > > Basically, the broker can just write to ZooKeeper to inform the > > > controller > > > > > about the request. For example, to handle partitionReassignment, > the > > > broker > > > > > will just write the requested partitions to > > /admin/reassign_partitions > > > > > (like what AdminUtils currently does) and then send a response to > the > > > > > client. This shouldn't take long and the implementation will be > > simpler > > > > > than forwarding the requests to the controller through RPC. > > > > > > > > > > Thanks, > > > > > > > > > > Jun > > > > > > > > > > > > > > > On Wed, Mar 18, 2015 at 3:03 PM, Andrii Biletskyi < > > > > > andrii.bilets...@stealth.ly> wrote: > > > > > > > > > > > Jun, > > > > > > > > > > > > I might be wrong but didn't we agree we will let any broker from > > the > > > > > > cluster handle *long-running* admin requests (at this time > > > > > preferredReplica > > > > > > and > > > > > > reassignPartitions), via zk admin path. Thus CreateTopics etc > > should > > > be > > > > > > sent > > > > > > only to the controller. > > > > > > > > > > > > Thanks, > > > > > > Andrii Biletskyi > > > > > > > > > > > > On Wed, Mar 18, 2015 at 11:55 PM, Jun Rao <j...@confluent.io> > > wrote: > > > > > > > > > > > > > Joel, Andril, > > > > > > > > > > > > > > I think we agreed that those admin requests can be issued to > any > > > > > broker. > > > > > > > Because of that, there doesn't seem to be a strong need to know > > the > > > > > > > controller. So, perhaps we can proceed by not making any change > > to > > > the > > > > > > > format of TMR right now. When we start using create topic > request > > > in > > > > > the > > > > > > > producer, we will need a new version of TMR that doesn't > trigger > > > auto > > > > > > topic > > > > > > > creation. But that can be done later. > > > > > > > > > > > > > > As a first cut implementation, I think the broker can just > write > > > to ZK > > > > > > > directly for > > > > > > > > > createToipic/alterTopic/reassignPartitions/preferredLeaderElection > > > > > > > requests, instead of forwarding them to the controller. This > will > > > > > > simplify > > > > > > > the implementation on the broker side. > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > > > > > > > > On Wed, Mar 18, 2015 at 11:58 AM, Joel Koshy < > > jjkosh...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > > > (Thanks Andrii for the summary) > > > > > > > > > > > > > > > > For (1) yes we will circle back on that shortly after syncing > > up > > > in > > > > > > > > person. I think it is close to getting committed although > > > development > > > > > > > > for KAFKA-1927 can probably begin without it. > > > > > > > > > > > > > > > > There is one more item we covered at the hangout. i.e., > whether > > > we > > > > > > > > want to add the coordinator to the topic metadata response or > > > provide > > > > > > > > a clearer ClusterMetadataRequest. > > > > > > > > > > > > > > > > There are two reasons I think we should try and avoid adding > > the > > > > > > > > field: > > > > > > > > - It is irrelevant to topic metadata > > > > > > > > - If we finally do request rerouting in Kafka then the field > > > would > > > > > add > > > > > > > > little to no value. (It still helps to have a separate > > > > > > > > ClusterMetadataRequest to query for cluster-wide > information > > > such > > > > > as > > > > > > > > 'which broker is the controller?' as Joe mentioned.) > > > > > > > > > > > > > > > > I think it would be cleaner to have an explicit > > > > > ClusterMetadataRequest > > > > > > > > that you can send to any broker in order to obtain the > > controller > > > > > (and > > > > > > > > in the future possibly other cluster-wide information). I > think > > > the > > > > > > > > main argument against doing this and instead adding it to the > > > topic > > > > > > > > metadata response was convenience - i.e., you don't have to > > > discover > > > > > > > > the controller in advance. However, I don't see much actual > > > > > > > > benefit/convenience in this and in fact think it is a > > non-issue. > > > Let > > > > > > > > me know if I'm overlooking something here. > > > > > > > > > > > > > > > > As an example, say we need to initiate partition reassignment > > by > > > > > > > > issuing the new ReassignPartitionsRequest to the controller > > > (assume > > > > > we > > > > > > > > already have the desired manual partition assignment). If we > > > are to > > > > > > > > augment topic metadata response then the flow be something > like > > > this > > > > > : > > > > > > > > > > > > > > > > - Issue topic metadata request to any broker (and discover > the > > > > > > > > controller > > > > > > > > - Connect to controller if required (i.e., if the broker > above > > != > > > > > > > > controller) > > > > > > > > - Issue the partition reassignment request to the controller. > > > > > > > > > > > > > > > > With an explicit cluster metadata request it would be: > > > > > > > > - Issue cluster metadata request to any broker > > > > > > > > - Connect to controller if required (i.e., if the broker > above > > != > > > > > > > > controller) > > > > > > > > - Issue the partition reassignment request > > > > > > > > > > > > > > > > So it seems to add little practical value and bloats topic > > > metadata > > > > > > > > response with an irrelevant detail. > > > > > > > > > > > > > > > > The other angle to this is the following - is it a matter of > > > naming? > > > > > > > > Should we just rename topic metadata request/response to just > > > > > > > > MetadataRequest/Response and add cluster metadata to it? By > > that > > > same > > > > > > > > token should we also allow querying for the consumer > > coordinator > > > (and > > > > > > > > in future transaction coordinator) as well? This leads to a > > > bloated > > > > > > > > request which isn't very appealing and altogether confusing. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > Joel > > > > > > > > > > > > > > > > On Wed, Mar 18, 2015 at 09:34:12AM -0700, Jun Rao 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. > > > > > > > > > > > > > > > > > > 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 inte > > ... > > > > [Message clipped] >