Hi, Justine, Thanks for the updated KIP. A few more comments below.
30. {"name": "id", "type": "string", "doc": "version id"}}: The doc should say UUID. 31. LeaderAndIsrResponse v5 and StopReplicaResponse v4 : It seems there is no need to add topic_id at partitions level. 32. Regarding partition metadata file. Perhaps the key can be a single word, sth like the following. version: 0 topic_id: 46bdb63f-9e8d-4a38-bf7b-ee4eb2a794e4 33. Another tricky thing that I realized is how to support the metadata topic introduced in KIP-595. It's a bit tricky to assign a UUID to the metadata topic since we have a chicken-and-egg problem. The controller needs to persist the UUID in the metadata topic in order to assign one successfully, but the metadata topic is needed to elect a controller (KIP-631). So, this probably needs a bit more thought. Jun On Thu, Sep 24, 2020 at 3:04 AM Ismael Juma <ism...@juma.me.uk> wrote: > Also, can we provide more details on how the Partition Metadata file will > be used? > > Ismael > > On Thu, Sep 24, 2020 at 3:01 AM Ismael Juma <ism...@juma.me.uk> wrote: > > > Hi Justine, > > > > I think we need to update the "Rejected Alternatives" section to take > into > > account that the proposal now removes the topic name from the fetch > > request. Also, if we are removing it from the Fetch request, does it make > > sense not to remove it from similar requests like ListOffsetRequest? > > > > Ismael > > > > On Thu, Sep 24, 2020 at 2:46 AM David Jacot <dja...@confluent.io> wrote: > > > >> Hi Justine, > >> > >> Thanks for the KIP. I finally had time to read it :). It is a great > >> improvement. > >> > >> I have a few comments/questions: > >> > >> 1. It seems that the schema of the StopReplicaRequest is slightly > >> outdated. > >> We > >> did some changes as part of KIP-570. V3 is already organized by topics. > >> > >> 2. I just want to make sure that I understand the reconciliation > >> logic correctly. When > >> an "INCREMENTAL" LeaderAndIsr Request is received, the broker will also > >> reconcile > >> when the local uuid does not match the uuid in the request, right? In > this > >> case, the > >> local log is staged for deletion. > >> > >> 3. In the documentation of the `delete.stale.topic.delay.ms` config, it > >> says "When a > >> FULL LeaderAndIsrRequest is received..." but I suppose it applies to > both > >> types. > >> > >> Best, > >> David > >> > >> On Thu, Sep 24, 2020 at 1:40 AM Justine Olshan <jols...@confluent.io> > >> wrote: > >> > >> > Hi Jun, > >> > > >> > Thanks for the comments. I apologize for some of the typos and > >> confusion. > >> > I’ve updated the KIP to fix some of the issues you mentioned. > >> > > >> > 20.2 I’ve changed the type to String. > >> > 20.1/3 I’ve updated the TopicZNode to fix formatting and reflect the > >> latest > >> > version before this change. > >> > > >> > 21. You are correct and I’ve removed this line. I’ve also added a line > >> > mentioning an IBP bump is necessary for migration > >> > > >> > 22. I think the wording was unclear but your summary is what was > >> intended > >> > by this line. I’ve updated to make this point more clear. “Remove > >> deleted > >> > topics from replicas by sending StopReplicaRequest V3 before the IBP > >> bump > >> > using the old logic, and using V4 and the new logic with topic IDs > after > >> > the IBP bump.” > >> > > >> > 23. I’ve removed the unspecified type from the KIP and mention that > IBP > >> > will be used to handle this request. “IBP will be used to determine > >> whether > >> > this new form of the request will be used. For older requests, we will > >> > ignore this field and default to previous behavior.” > >> > > >> > 24. I’ve fixed this typo. > >> > > >> > 25. I've added a topics at a higher level for LeaderAndIsrResponse v5, > >> > StopReplicaResponse v4. I've also changed StopReplicaRequest v4 to > have > >> > topics at a higher level. > >> > > >> > 26. I’ve updated forgotten_topics_data--added the topic ID and removed > >> the > >> > topic name > >> > > >> > 27. I’ve decided on plain text, and I’ve added an example. > >> > > >> > 28. I’ve added this idea to future work. > >> > > >> > Thanks again for taking a look, > >> > > >> > Justine > >> > > >> > On Wed, Sep 23, 2020 at 10:28 AM Jun Rao <j...@confluent.io> wrote: > >> > > >> > > Hi, Justine, > >> > > > >> > > Thanks for the response. Made another pass. A few more comments > below. > >> > > > >> > > 20. znode schema: > >> > > 20.1 It seems that {"name": "version", "type": "int", "id": "UUID", > >> > "doc": > >> > > "version id"} should be {"name": "version", "type": "int"}, {"name": > >> > "id", > >> > > "type": "UUID", "doc": "version id"}. > >> > > 20.2 The znode format is JSON which doesn't have UUID type. So the > >> type > >> > > probably should be string? > >> > > 20.3 Also, the existing format used seems outdated. It should have > the > >> > > following format. > >> > > Json.encodeAsBytes(Map( > >> > > "version" -> 2, > >> > > "partitions" -> replicaAssignmentJson.asJava, > >> > > "adding_replicas" -> addingReplicasAssignmentJson.asJava, > >> > > "removing_replicas" -> removingReplicasAssignmentJson.asJava > >> > > ).asJava) > >> > > } > >> > > > >> > > 21. Migration: The KIP says "The migration process can take place > >> without > >> > > an inter-broker protocol bump, as the format stored in > >> > > /brokers/topics/[topic] will be compatible with older broker > >> versions." > >> > > However, since we are bumping up the version of inter-broker > >> requests, it > >> > > seems that we need to use IBP for migration. > >> > > > >> > > 22. The KIP says "Remove deleted topics from replicas by sending > >> > > StopReplicaRequest V3 for any topics which do not contain a topic > ID, > >> and > >> > > V4 for any topics which do contain a topic ID.". However, if we use > >> IBP, > >> > it > >> > > seems that the controller will either send StopReplicaRequest V3 > >> > > or StopReplicaRequest V4, but never mixed V3 and V4 for different > >> topics. > >> > > Basically, before the IBP bump, V3 will be used. After the IBP bump, > >> > > topicId will be created and V4 will be used. > >> > > > >> > > 23. Given that we depend on IBP, do we still need "0 UNSPECIFIED" > >> > > in LeaderAndIsr? > >> > > > >> > > 24. LeaderAndIsrResponse v5 : It still has the topic field. > >> > > > >> > > 25. LeaderAndIsrResponse v5, StopReplicaResponse v4: Could we use > this > >> > > opportunity to organize the response in 2 levels, first by topic, > >> then by > >> > > partition, as most other requests/responses? > >> > > > >> > > 26. FetchRequest v13 : Should forgotten_topics_data use topicId too? > >> > > > >> > > 27. "This file can either be plain text (key/value pairs) or JSON." > >> Have > >> > we > >> > > decided which one to use? Also, it would be helpful to provide an > >> > example. > >> > > > >> > > 28. Future improvement: Another future improvement opportunity is to > >> use > >> > > topicId in GroupMetadataManager.offsetCommitKey in the offset_commit > >> > topic. > >> > > This may save some space. > >> > > > >> > > Thanks, > >> > > > >> > > Jun > >> > > > >> > > On Wed, Sep 23, 2020 at 8:50 AM Justine Olshan < > jols...@confluent.io> > >> > > wrote: > >> > > > >> > > > Hi Tom, > >> > > > > >> > > > Thanks for the comment. I think this is a really good idea and it > >> has > >> > > been > >> > > > added to the KIP under the newly added tooling section. > >> > > > > >> > > > Thanks again, > >> > > > Justine > >> > > > > >> > > > On Wed, Sep 23, 2020 at 3:17 AM Tom Bentley <tbent...@redhat.com> > >> > wrote: > >> > > > > >> > > > > Hi Justine, > >> > > > > > >> > > > > I know you started the vote thread, but on re-reading the KIP I > >> > noticed > >> > > > > that although the topic id is included in the MetadataResponse > >> it's > >> > not > >> > > > > surfaced in the output from `kafka-topics.sh --describe`. Maybe > >> that > >> > > was > >> > > > > intentional because ids are intentionally not really something > the > >> > user > >> > > > > should care deeply about, but it would also make life harder for > >> > anyone > >> > > > > debugging Kafka and this would likely get worse the more topic > ids > >> > got > >> > > > > rolled out across the protocols, clients etc. It seems likely > that > >> > > > > `kafka-topics.sh` will eventually need the ability to show the > id > >> of > >> > a > >> > > > > topic and perhaps find a topic name given an id. Is there any > >> reason > >> > > not > >> > > > to > >> > > > > implement that in this KIP? > >> > > > > > >> > > > > Many thanks, > >> > > > > > >> > > > > Tom > >> > > > > > >> > > > > On Mon, Sep 21, 2020 at 9:54 PM Justine Olshan < > >> jols...@confluent.io > >> > > > >> > > > > wrote: > >> > > > > > >> > > > > > Hi all, > >> > > > > > > >> > > > > > After thinking about it, I've decided to remove the topic name > >> from > >> > > the > >> > > > > > Fetch Request and Response after all. Since there are so many > of > >> > > these > >> > > > > > requests per second, it is worth removing the extra > information. > >> > I've > >> > > > > > updated the KIP to reflect this change. > >> > > > > > > >> > > > > > Please let me know if there is anything else we should discuss > >> > before > >> > > > > > voting. > >> > > > > > > >> > > > > > Thank you, > >> > > > > > Justine > >> > > > > > > >> > > > > > On Fri, Sep 18, 2020 at 9:46 AM Justine Olshan < > >> > jols...@confluent.io > >> > > > > >> > > > > > wrote: > >> > > > > > > >> > > > > > > Hi Jun, > >> > > > > > > > >> > > > > > > I see what you are saying. For now we can remove the extra > >> > > > information. > >> > > > > > > I'll leave the option to add more fields to the file in the > >> > future. > >> > > > The > >> > > > > > KIP > >> > > > > > > has been updated to reflect this change. > >> > > > > > > > >> > > > > > > Thanks, > >> > > > > > > Justine > >> > > > > > > > >> > > > > > > On Fri, Sep 18, 2020 at 8:46 AM Jun Rao <j...@confluent.io> > >> > wrote: > >> > > > > > > > >> > > > > > >> Hi, Justine, > >> > > > > > >> > >> > > > > > >> Thanks for the reply. > >> > > > > > >> > >> > > > > > >> 13. If the log directory is the source of truth, it means > >> that > >> > the > >> > > > > > >> redundant info in the metadata file will be ignored. Then > the > >> > > > question > >> > > > > > is > >> > > > > > >> why do we need to put the redundant info in the metadata > file > >> > now? > >> > > > > > >> > >> > > > > > >> Thanks, > >> > > > > > >> > >> > > > > > >> Jun > >> > > > > > >> > >> > > > > > >> On Thu, Sep 17, 2020 at 5:07 PM Justine Olshan < > >> > > > jols...@confluent.io> > >> > > > > > >> wrote: > >> > > > > > >> > >> > > > > > >> > Hi Jun, > >> > > > > > >> > Thanks for the quick response! > >> > > > > > >> > > >> > > > > > >> > 12. I've decided to bump up the versions on the requests > >> and > >> > > > updated > >> > > > > > the > >> > > > > > >> > KIP. I think it's good we thoroughly discussed the > options > >> > here, > >> > > > so > >> > > > > we > >> > > > > > >> know > >> > > > > > >> > we made a good choice. :) > >> > > > > > >> > > >> > > > > > >> > 13. This is an interesting situation. I think if this > does > >> > occur > >> > > > we > >> > > > > > >> should > >> > > > > > >> > give a warning. I agree that it's hard to know the source > >> of > >> > > truth > >> > > > > for > >> > > > > > >> sure > >> > > > > > >> > since the directory or the file could be manually > >> modified. I > >> > > > guess > >> > > > > > the > >> > > > > > >> > directory could be used as the source of truth. To be > >> honest, > >> > > I'm > >> > > > > not > >> > > > > > >> > really sure what happens in kafka when the log directory > is > >> > > > renamed > >> > > > > > >> > manually in such a way. I'm also wondering if the > >> situation is > >> > > > > > >> recoverable > >> > > > > > >> > in this scenario. > >> > > > > > >> > > >> > > > > > >> > Thanks, > >> > > > > > >> > Justine > >> > > > > > >> > > >> > > > > > >> > On Thu, Sep 17, 2020 at 4:28 PM Jun Rao < > j...@confluent.io> > >> > > wrote: > >> > > > > > >> > > >> > > > > > >> > > Hi, Justine, > >> > > > > > >> > > > >> > > > > > >> > > Thanks for the reply. > >> > > > > > >> > > > >> > > > > > >> > > 12. I don't have a strong preference either. However, > if > >> we > >> > > need > >> > > > > IBP > >> > > > > > >> > > anyway, maybe it's easier to just bump up the version > for > >> > all > >> > > > > inter > >> > > > > > >> > broker > >> > > > > > >> > > requests and add the topic id field as a regular > field. A > >> > > > regular > >> > > > > > >> field > >> > > > > > >> > is > >> > > > > > >> > > a bit more concise in wire transfer than a flexible > >> field. > >> > > > > > >> > > > >> > > > > > >> > > 13. The confusion that I was referring to is between > the > >> > topic > >> > > > > name > >> > > > > > >> and > >> > > > > > >> > > partition number between the log dir and the metadata > >> file. > >> > > For > >> > > > > > >> example, > >> > > > > > >> > if > >> > > > > > >> > > the log dir is topicA-1 and the metadata file in it has > >> > topicB > >> > > > and > >> > > > > > >> > > partition 0 (say due to a bug or manual modification), > >> which > >> > > one > >> > > > > do > >> > > > > > we > >> > > > > > >> > use > >> > > > > > >> > > as the source of truth? > >> > > > > > >> > > > >> > > > > > >> > > Jun > >> > > > > > >> > > > >> > > > > > >> > > On Thu, Sep 17, 2020 at 3:43 PM Justine Olshan < > >> > > > > > jols...@confluent.io> > >> > > > > > >> > > wrote: > >> > > > > > >> > > > >> > > > > > >> > > > Hi Jun, > >> > > > > > >> > > > Thanks for the comments. > >> > > > > > >> > > > > >> > > > > > >> > > > 12. I bumped the LeaderAndIsrRequest because I > removed > >> the > >> > > > topic > >> > > > > > >> name > >> > > > > > >> > > field > >> > > > > > >> > > > in the response. It may be possible to avoid bumping > >> the > >> > > > version > >> > > > > > >> > without > >> > > > > > >> > > > that change, but I may be missing something. > >> > > > > > >> > > > I believe StopReplica is actually on version 3 now, > but > >> > > > because > >> > > > > > >> > version 2 > >> > > > > > >> > > > is flexible, I kept that listed as version 2 on the > KIP > >> > > page. > >> > > > > > >> However, > >> > > > > > >> > > you > >> > > > > > >> > > > may be right in that we may need to bump the version > on > >> > > > > > StopReplica > >> > > > > > >> to > >> > > > > > >> > > deal > >> > > > > > >> > > > with deletion differently as mentioned above. I don't > >> know > >> > > if > >> > > > I > >> > > > > > >> have a > >> > > > > > >> > > big > >> > > > > > >> > > > preference over used tagged fields or not. > >> > > > > > >> > > > > >> > > > > > >> > > > 13. I was thinking that in the case where the file > and > >> the > >> > > > > request > >> > > > > > >> > topic > >> > > > > > >> > > > ids don't match, it means that the broker's topic/the > >> one > >> > in > >> > > > the > >> > > > > > >> file > >> > > > > > >> > has > >> > > > > > >> > > > been deleted. In that case, we would need to delete > the > >> > old > >> > > > > topic > >> > > > > > >> and > >> > > > > > >> > > start > >> > > > > > >> > > > receiving the new version. If the topic name were to > >> > change, > >> > > > but > >> > > > > > the > >> > > > > > >> > ids > >> > > > > > >> > > > still matched, the file would also need to update. > Am I > >> > > > missing > >> > > > > a > >> > > > > > >> case > >> > > > > > >> > > > where the file would be correct and not the request? > >> > > > > > >> > > > > >> > > > > > >> > > > Thanks, > >> > > > > > >> > > > Justine > >> > > > > > >> > > > > >> > > > > > >> > > > On Thu, Sep 17, 2020 at 3:18 PM Jun Rao < > >> j...@confluent.io > >> > > > >> > > > > wrote: > >> > > > > > >> > > > > >> > > > > > >> > > > > Hi, Justine, > >> > > > > > >> > > > > > >> > > > > > >> > > > > Thanks for the reply. A couple of more comments > >> below. > >> > > > > > >> > > > > > >> > > > > > >> > > > > 12. ListOffset and OffsetForLeader currently don't > >> > support > >> > > > > > >> flexible > >> > > > > > >> > > > fields. > >> > > > > > >> > > > > So, we have to bump up the version number and use > >> IBP at > >> > > > least > >> > > > > > for > >> > > > > > >> > > these > >> > > > > > >> > > > > two requests. Note that it seems 2.7.0 will require > >> IBP > >> > > > anyway > >> > > > > > >> > because > >> > > > > > >> > > of > >> > > > > > >> > > > > changes in KAFKA-10435. Also, it seems that the > >> version > >> > > for > >> > > > > > >> > > > > LeaderAndIsrRequest and StopReplica are bumped even > >> > though > >> > > > we > >> > > > > > only > >> > > > > > >> > > added > >> > > > > > >> > > > a > >> > > > > > >> > > > > tagged field. But since IBP is needed anyway, we > may > >> > want > >> > > to > >> > > > > > >> revisit > >> > > > > > >> > > the > >> > > > > > >> > > > > overall tagged field choice. > >> > > > > > >> > > > > > >> > > > > > >> > > > > 13. The only downside is the potential confusion on > >> > which > >> > > > one > >> > > > > is > >> > > > > > >> the > >> > > > > > >> > > > source > >> > > > > > >> > > > > of truth if they don't match. Another option is to > >> > include > >> > > > > those > >> > > > > > >> > fields > >> > > > > > >> > > > in > >> > > > > > >> > > > > the metadata file when we actually change the > >> directory > >> > > > > > structure. > >> > > > > > >> > > > > > >> > > > > > >> > > > > Thanks, > >> > > > > > >> > > > > > >> > > > > > >> > > > > Jun > >> > > > > > >> > > > > > >> > > > > > >> > > > > On Thu, Sep 17, 2020 at 2:01 PM Justine Olshan < > >> > > > > > >> jols...@confluent.io > >> > > > > > >> > > > >> > > > > > >> > > > > wrote: > >> > > > > > >> > > > > > >> > > > > > >> > > > > > Hello all, > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > I've thought some more about removing the topic > >> name > >> > > field > >> > > > > > from > >> > > > > > >> > some > >> > > > > > >> > > of > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > requests. On closer inspection of the > >> > > requests/responses, > >> > > > it > >> > > > > > >> seems > >> > > > > > >> > > that > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > internal changes would be much larger than I > >> expected. > >> > > > Some > >> > > > > > >> > protocols > >> > > > > > >> > > > > > involve clients, so they would require changes > too. > >> > I'm > >> > > > > > thinking > >> > > > > > >> > that > >> > > > > > >> > > > for > >> > > > > > >> > > > > > now, removing the topic name from these requests > >> and > >> > > > > responses > >> > > > > > >> are > >> > > > > > >> > > out > >> > > > > > >> > > > of > >> > > > > > >> > > > > > scope. > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > I have decided to just keep the change > >> > > > LeaderAndIsrResponse > >> > > > > to > >> > > > > > >> > remove > >> > > > > > >> > > > the > >> > > > > > >> > > > > > topic name, and have updated the KIP to reflect > >> this > >> > > > > change. I > >> > > > > > >> have > >> > > > > > >> > > > also > >> > > > > > >> > > > > > mentioned the other requests and responses in > >> future > >> > > work. > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > I'm hoping to start the voting process soon, so > >> let me > >> > > > know > >> > > > > if > >> > > > > > >> > there > >> > > > > > >> > > is > >> > > > > > >> > > > > > anything else we should discuss. > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > Thank you, > >> > > > > > >> > > > > > Justine > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > On Tue, Sep 15, 2020 at 3:57 PM Justine Olshan < > >> > > > > > >> > jols...@confluent.io > >> > > > > > >> > > > > >> > > > > > >> > > > > > wrote: > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > > Hello again, > >> > > > > > >> > > > > > > To follow up on some of the other comments: > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > 10/11) We can remove the topic name from these > >> > > > > > >> > requests/responses, > >> > > > > > >> > > > and > >> > > > > > >> > > > > > > that means we will just have to make a few > >> internal > >> > > > > changes > >> > > > > > to > >> > > > > > >> > make > >> > > > > > >> > > > > > > partitions accessible by topic id and > partition. > >> I > >> > can > >> > > > > > update > >> > > > > > >> the > >> > > > > > >> > > KIP > >> > > > > > >> > > > > to > >> > > > > > >> > > > > > > remove them unless anyone thinks they should > >> stay. > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > 12) Addressed in the previous email. I've > updated > >> > the > >> > > > KIP > >> > > > > to > >> > > > > > >> > > include > >> > > > > > >> > > > > > > tagged fields for the requests and responses. > >> (More > >> > on > >> > > > > that > >> > > > > > >> > below) > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > 13) I think part of the idea for including this > >> > > > > information > >> > > > > > >> is to > >> > > > > > >> > > > > prepare > >> > > > > > >> > > > > > > for future changes. Perhaps the directory > >> structure > >> > > > might > >> > > > > > >> change > >> > > > > > >> > > from > >> > > > > > >> > > > > > > topicName_partitionNumber to something like > >> > > > > > >> > > topicID_partitionNumber. > >> > > > > > >> > > > > Then > >> > > > > > >> > > > > > > it would be useful to have the topic name in > the > >> > file > >> > > > > since > >> > > > > > it > >> > > > > > >> > > would > >> > > > > > >> > > > > not > >> > > > > > >> > > > > > be > >> > > > > > >> > > > > > > in the directory structure. Supporting topic > >> renames > >> > > > might > >> > > > > > be > >> > > > > > >> > > easier > >> > > > > > >> > > > if > >> > > > > > >> > > > > > the > >> > > > > > >> > > > > > > other fields are included. Would there be any > >> > > downsides > >> > > > to > >> > > > > > >> > > including > >> > > > > > >> > > > > this > >> > > > > > >> > > > > > > information? > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > 14) Yes, we would need to copy the partition > >> > metadata > >> > > > > file > >> > > > > > in > >> > > > > > >> > this > >> > > > > > >> > > > > > > process. I've updated the KIP to include this. > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > 15) I believe Lucas meant v1 and v2 here. He > was > >> > > > referring > >> > > > > > to > >> > > > > > >> how > >> > > > > > >> > > the > >> > > > > > >> > > > > > > requests would fall under different IBP and > meant > >> > that > >> > > > > older > >> > > > > > >> > > brokers > >> > > > > > >> > > > > > would > >> > > > > > >> > > > > > > have to use the older version of the request > and > >> the > >> > > > > > existing > >> > > > > > >> > topic > >> > > > > > >> > > > > > > deletion process. At first, it seemed like > tagged > >> > > fields > >> > > > > > would > >> > > > > > >> > > > resolve > >> > > > > > >> > > > > > > the IBP issue. However, we may need IBP for > this > >> > > request > >> > > > > > after > >> > > > > > >> > all > >> > > > > > >> > > > > since > >> > > > > > >> > > > > > > the controller handles the topic deletion > >> > differently > >> > > > > > >> depending > >> > > > > > >> > on > >> > > > > > >> > > > the > >> > > > > > >> > > > > > IBP > >> > > > > > >> > > > > > > version. In an older version, we can't just > send > >> a > >> > > > > > StopReplica > >> > > > > > >> > > delete > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > > topic immediately like we'd want to for this > KIP. > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > This makes me wonder if we want tagged fields > on > >> all > >> > > the > >> > > > > > >> requests > >> > > > > > >> > > > after > >> > > > > > >> > > > > > > all. Let me know your thoughts! > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > Justine > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > On Tue, Sep 15, 2020 at 1:03 PM Justine Olshan > < > >> > > > > > >> > > jols...@confluent.io > >> > > > > > >> > > > > > >> > > > > > >> > > > > > > wrote: > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > >> Hi all, > >> > > > > > >> > > > > > >> Jun brought up a good point in his last email > >> about > >> > > > > tagged > >> > > > > > >> > fields, > >> > > > > > >> > > > and > >> > > > > > >> > > > > > >> I've updated the KIP to reflect that the > >> changes to > >> > > > > > requests > >> > > > > > >> and > >> > > > > > >> > > > > > responses > >> > > > > > >> > > > > > >> will be in the form of tagged fields to avoid > >> > > changing > >> > > > > IBP. > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> Jun: I plan on sending a followup email to > >> address > >> > > some > >> > > > > of > >> > > > > > >> the > >> > > > > > >> > > other > >> > > > > > >> > > > > > >> points. > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> Thanks, > >> > > > > > >> > > > > > >> Justine > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >> On Mon, Sep 14, 2020 at 4:25 PM Jun Rao < > >> > > > > j...@confluent.io> > >> > > > > > >> > wrote: > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > >>> Hi, Justine, > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> Thanks for the updated KIP. A few comments > >> below. > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 10. LeaderAndIsr Response: Do we need the > topic > >> > > name? > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 11. For the changed request/response, other > >> than > >> > > > > > >> LeaderAndIsr, > >> > > > > > >> > > > > > >>> UpdateMetadata, Metadata, do we need to > include > >> > the > >> > > > > topic > >> > > > > > >> name? > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 12. It seems that upgrades don't require IBP. > >> Does > >> > > > that > >> > > > > > mean > >> > > > > > >> > the > >> > > > > > >> > > > new > >> > > > > > >> > > > > > >>> fields > >> > > > > > >> > > > > > >>> in all the request/response are added as > tagged > >> > > fields > >> > > > > > >> without > >> > > > > > >> > > > > bumping > >> > > > > > >> > > > > > up > >> > > > > > >> > > > > > >>> the request version? It would be useful to > make > >> > that > >> > > > > > clear. > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 13. Partition Metadata file: Do we need to > >> include > >> > > the > >> > > > > > topic > >> > > > > > >> > name > >> > > > > > >> > > > and > >> > > > > > >> > > > > > the > >> > > > > > >> > > > > > >>> partition id since they are implied in the > >> > directory > >> > > > > name? > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 14. In the JBOD mode, we support moving a > >> > > partition's > >> > > > > data > >> > > > > > >> from > >> > > > > > >> > > one > >> > > > > > >> > > > > > disk > >> > > > > > >> > > > > > >>> to > >> > > > > > >> > > > > > >>> another. Will the new partition metadata file > >> be > >> > > > copied > >> > > > > > >> during > >> > > > > > >> > > that > >> > > > > > >> > > > > > >>> process? > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> 15. The KIP says "Remove deleted topics from > >> > > replicas > >> > > > by > >> > > > > > >> > sending > >> > > > > > >> > > > > > >>> StopReplicaRequest V2 for any topics which do > >> not > >> > > > > contain > >> > > > > > a > >> > > > > > >> > topic > >> > > > > > >> > > > ID, > >> > > > > > >> > > > > > and > >> > > > > > >> > > > > > >>> V3 for any topics which do contain a topic > >> ID.". > >> > > > > However, > >> > > > > > it > >> > > > > > >> > > seems > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > >>> updated controller will create all missing > >> topic > >> > IDs > >> > > > > first > >> > > > > > >> > before > >> > > > > > >> > > > > doing > >> > > > > > >> > > > > > >>> other actions. So, is StopReplicaRequest V2 > >> > needed? > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> Jun > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> On Fri, Sep 11, 2020 at 10:31 AM John > Roesler < > >> > > > > > >> > > vvcep...@apache.org > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >>> wrote: > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >>> > Thanks, Justine! > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > Your response seems compelling to me. > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > -John > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > On Fri, 2020-09-11 at 10:17 -0700, Justine > >> > Olshan > >> > > > > wrote: > >> > > > > > >> > > > > > >>> > > Hello all, > >> > > > > > >> > > > > > >>> > > Thanks for continuing the discussion! I > >> have a > >> > > few > >> > > > > > >> > responses > >> > > > > > >> > > to > >> > > > > > >> > > > > > your > >> > > > > > >> > > > > > >>> > points. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > Tom: You are correct in that this KIP has > >> not > >> > > > > > mentioned > >> > > > > > >> the > >> > > > > > >> > > > > > >>> > > DeleteTopicsRequest. I think that this > >> would > >> > be > >> > > > out > >> > > > > of > >> > > > > > >> > scope > >> > > > > > >> > > > for > >> > > > > > >> > > > > > >>> now, but > >> > > > > > >> > > > > > >>> > > may be something worth adding in the > >> future. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > John: We did consider sequence ids, but > >> there > >> > > are > >> > > > a > >> > > > > > few > >> > > > > > >> > > reasons > >> > > > > > >> > > > > to > >> > > > > > >> > > > > > >>> favor > >> > > > > > >> > > > > > >>> > > UUIDs. There are several cases where > topics > >> > from > >> > > > > > >> different > >> > > > > > >> > > > > clusters > >> > > > > > >> > > > > > >>> may > >> > > > > > >> > > > > > >>> > > interact now and in the future. For > >> example, > >> > > > Mirror > >> > > > > > >> Maker 2 > >> > > > > > >> > > may > >> > > > > > >> > > > > > >>> benefit > >> > > > > > >> > > > > > >>> > > from being able to detect when a cluster > >> being > >> > > > > > mirrored > >> > > > > > >> is > >> > > > > > >> > > > > deleted > >> > > > > > >> > > > > > >>> and > >> > > > > > >> > > > > > >>> > > recreated and globally unique identifiers > >> > would > >> > > > make > >> > > > > > >> > > resolving > >> > > > > > >> > > > > > issues > >> > > > > > >> > > > > > >>> > > easier than sequence IDs which may > collide > >> > > between > >> > > > > > >> > clusters. > >> > > > > > >> > > > > > KIP-405 > >> > > > > > >> > > > > > >>> > > (tiered storage) will also benefit from > >> > globally > >> > > > > > unique > >> > > > > > >> IDs > >> > > > > > >> > > as > >> > > > > > >> > > > > > shared > >> > > > > > >> > > > > > >>> > > buckets may be used between clusters. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > Globally unique IDs would also make > >> > > functionality > >> > > > > like > >> > > > > > >> > moving > >> > > > > > >> > > > > > topics > >> > > > > > >> > > > > > >>> > > between disparate clusters easier in the > >> > future, > >> > > > > > >> simplify > >> > > > > > >> > any > >> > > > > > >> > > > > > future > >> > > > > > >> > > > > > >>> > > implementations of backups and restores, > >> and > >> > > more. > >> > > > > In > >> > > > > > >> > > general, > >> > > > > > >> > > > > > >>> unique IDs > >> > > > > > >> > > > > > >>> > > would ensure that the source cluster > >> topics do > >> > > not > >> > > > > > >> conflict > >> > > > > > >> > > > with > >> > > > > > >> > > > > > the > >> > > > > > >> > > > > > >>> > > destination cluster topics. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > If we were to use sequence ids, we would > >> need > >> > > > > > >> sufficiently > >> > > > > > >> > > > large > >> > > > > > >> > > > > > >>> cluster > >> > > > > > >> > > > > > >>> > > ids to be stored with the topic > >> identifiers or > >> > > we > >> > > > > run > >> > > > > > >> the > >> > > > > > >> > > risk > >> > > > > > >> > > > of > >> > > > > > >> > > > > > >>> > > collisions. This will give up any > >> advantage in > >> > > > > > >> compactness > >> > > > > > >> > > that > >> > > > > > >> > > > > > >>> sequence > >> > > > > > >> > > > > > >>> > > numbers may bring. Given these > advantages I > >> > > think > >> > > > it > >> > > > > > >> makes > >> > > > > > >> > > > sense > >> > > > > > >> > > > > to > >> > > > > > >> > > > > > >>> use > >> > > > > > >> > > > > > >>> > > UUIDs. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > Gokul: This is an interesting idea, but > >> this > >> > is > >> > > a > >> > > > > > >> breaking > >> > > > > > >> > > > > change. > >> > > > > > >> > > > > > >>> Out of > >> > > > > > >> > > > > > >>> > > scope for now, but maybe worth discussing > >> in > >> > the > >> > > > > > future. > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > Hope this explains some of the decisions, > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > Justine > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > On Fri, Sep 11, 2020 at 8:27 AM Gokul > >> Ramanan > >> > > > > > >> Subramanian < > >> > > > > > >> > > > > > >>> > > gokul24...@gmail.com> wrote: > >> > > > > > >> > > > > > >>> > > > >> > > > > > >> > > > > > >>> > > > Hi. > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > Thanks for the KIP. > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > Have you thought about whether it makes > >> > sense > >> > > to > >> > > > > > >> support > >> > > > > > >> > > > > > >>> authorizing a > >> > > > > > >> > > > > > >>> > > > principal for a topic ID rather than a > >> topic > >> > > > name > >> > > > > to > >> > > > > > >> > > achieve > >> > > > > > >> > > > > > >>> tighter > >> > > > > > >> > > > > > >>> > > > security? > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > Or is the topic ID fundamentally an > >> internal > >> > > > > detail > >> > > > > > >> > similar > >> > > > > > >> > > > to > >> > > > > > >> > > > > > >>> epochs > >> > > > > > >> > > > > > >>> > used > >> > > > > > >> > > > > > >>> > > > in a bunch of other places in Kafka? > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > Thanks. > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > On Fri, Sep 11, 2020 at 4:06 PM John > >> > Roesler < > >> > > > > > >> > > > > > vvcep...@apache.org> > >> > > > > > >> > > > > > >>> > wrote: > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > > > Hello Justine, > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > Thanks for the KIP! > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > I happen to have been confronted > >> recently > >> > > with > >> > > > > the > >> > > > > > >> need > >> > > > > > >> > > to > >> > > > > > >> > > > > keep > >> > > > > > >> > > > > > >>> > track of > >> > > > > > >> > > > > > >>> > > > a > >> > > > > > >> > > > > > >>> > > > > large number of topics as compactly > as > >> > > > > possible. I > >> > > > > > >> was > >> > > > > > >> > > > going > >> > > > > > >> > > > > to > >> > > > > > >> > > > > > >>> come > >> > > > > > >> > > > > > >>> > up > >> > > > > > >> > > > > > >>> > > > > with some way to dictionary encode > the > >> > topic > >> > > > > names > >> > > > > > >> as > >> > > > > > >> > > > > integers, > >> > > > > > >> > > > > > >>> but > >> > > > > > >> > > > > > >>> > this > >> > > > > > >> > > > > > >>> > > > > seems much better! > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > Apologies if this has been raised > >> before, > >> > > but > >> > > > > I’m > >> > > > > > >> > > wondering > >> > > > > > >> > > > > > >>> about the > >> > > > > > >> > > > > > >>> > > > > choice of UUID vs sequence number for > >> the > >> > > ids. > >> > > > > > >> > Typically, > >> > > > > > >> > > > > I’ve > >> > > > > > >> > > > > > >>> seen > >> > > > > > >> > > > > > >>> > UUIDs > >> > > > > > >> > > > > > >>> > > > > in two situations: > >> > > > > > >> > > > > > >>> > > > > 1. When processes need to generate > >> > > > non-colliding > >> > > > > > >> > > > identifiers > >> > > > > > >> > > > > > >>> without > >> > > > > > >> > > > > > >>> > > > > coordination. > >> > > > > > >> > > > > > >>> > > > > 2. When the identifier needs to be > >> > > > “universally > >> > > > > > >> > unique”; > >> > > > > > >> > > > > I.e., > >> > > > > > >> > > > > > >>> the > >> > > > > > >> > > > > > >>> > > > > identifier needs to distinguish the > >> entity > >> > > > from > >> > > > > > all > >> > > > > > >> > other > >> > > > > > >> > > > > > >>> entities > >> > > > > > >> > > > > > >>> > that > >> > > > > > >> > > > > > >>> > > > > could ever exist. This is useful in > >> cases > >> > > > where > >> > > > > > >> > entities > >> > > > > > >> > > > from > >> > > > > > >> > > > > > all > >> > > > > > >> > > > > > >>> > kinds > >> > > > > > >> > > > > > >>> > > > of > >> > > > > > >> > > > > > >>> > > > > systems get mixed together, such as > >> when > >> > > > dumping > >> > > > > > >> logs > >> > > > > > >> > > from > >> > > > > > >> > > > > all > >> > > > > > >> > > > > > >>> > processes > >> > > > > > >> > > > > > >>> > > > in > >> > > > > > >> > > > > > >>> > > > > a company into a common system. > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > Maybe I’m being short-sighted, but it > >> > > doesn’t > >> > > > > seem > >> > > > > > >> like > >> > > > > > >> > > > > either > >> > > > > > >> > > > > > >>> really > >> > > > > > >> > > > > > >>> > > > > applies here. It seems like the > brokers > >> > > could > >> > > > > and > >> > > > > > >> would > >> > > > > > >> > > > > achieve > >> > > > > > >> > > > > > >>> > consensus > >> > > > > > >> > > > > > >>> > > > > when creating a topic anyway, which > is > >> all > >> > > > > that’s > >> > > > > > >> > > required > >> > > > > > >> > > > to > >> > > > > > >> > > > > > >>> > generate > >> > > > > > >> > > > > > >>> > > > > non-colliding sequence ids. For the > >> > second, > >> > > as > >> > > > > you > >> > > > > > >> > > mention, > >> > > > > > >> > > > > we > >> > > > > > >> > > > > > >>> could > >> > > > > > >> > > > > > >>> > > > assign > >> > > > > > >> > > > > > >>> > > > > a UUID to the cluster as a whole, > which > >> > > would > >> > > > > > render > >> > > > > > >> > any > >> > > > > > >> > > > > > resource > >> > > > > > >> > > > > > >>> > scoped > >> > > > > > >> > > > > > >>> > > > to > >> > > > > > >> > > > > > >>> > > > > the broker universally unique as > well. > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > The reason I mention this is that, > >> > although > >> > > a > >> > > > > UUID > >> > > > > > >> is > >> > > > > > >> > way > >> > > > > > >> > > > > more > >> > > > > > >> > > > > > >>> > compact > >> > > > > > >> > > > > > >>> > > > > than topic names, it’s still 16 > bytes. > >> In > >> > > > > > contrast, > >> > > > > > >> a > >> > > > > > >> > > > 4-byte > >> > > > > > >> > > > > > >>> integer > >> > > > > > >> > > > > > >>> > > > > sequence id would give us 4 billion > >> unique > >> > > > > topics > >> > > > > > >> per > >> > > > > > >> > > > > cluster, > >> > > > > > >> > > > > > >>> which > >> > > > > > >> > > > > > >>> > > > seems > >> > > > > > >> > > > > > >>> > > > > like enough ;) > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > Considering the number of different > >> times > >> > > > these > >> > > > > > >> topic > >> > > > > > >> > > > > > >>> identifiers are > >> > > > > > >> > > > > > >>> > > > sent > >> > > > > > >> > > > > > >>> > > > > over the wire or stored in memory, it > >> > seems > >> > > > like > >> > > > > > it > >> > > > > > >> > might > >> > > > > > >> > > > be > >> > > > > > >> > > > > > >>> worth > >> > > > > > >> > > > > > >>> > the > >> > > > > > >> > > > > > >>> > > > > additional 4x space savings. > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > What do you think about this? > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > Thanks, > >> > > > > > >> > > > > > >>> > > > > John > >> > > > > > >> > > > > > >>> > > > > > >> > > > > > >> > > > > > >>> > > > > On Fri, Sep 11, 2020, at 03:20, Tom > >> > Bentley > >> > > > > wrote: > >> > > > > > >> > > > > > >>> > > > > > Hi Justine, > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > This looks like a very welcome > >> > > improvement. > >> > > > > > >> Thanks! > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > Maybe I missed it, but the KIP > >> doesn't > >> > > seem > >> > > > to > >> > > > > > >> > mention > >> > > > > > >> > > > > > changing > >> > > > > > >> > > > > > >>> > > > > > DeleteTopicsRequest to identify the > >> > topic > >> > > > > using > >> > > > > > an > >> > > > > > >> > id. > >> > > > > > >> > > > > Maybe > >> > > > > > >> > > > > > >>> > that's out > >> > > > > > >> > > > > > >>> > > > > of > >> > > > > > >> > > > > > >>> > > > > > scope, but DeleteTopicsRequest is > not > >> > > listed > >> > > > > > among > >> > > > > > >> > the > >> > > > > > >> > > > > Future > >> > > > > > >> > > > > > >>> Work > >> > > > > > >> > > > > > >>> > APIs > >> > > > > > >> > > > > > >>> > > > > > either. > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > Kind regards, > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > Tom > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > On Thu, Sep 10, 2020 at 3:59 PM > >> Satish > >> > > > > Duggana < > >> > > > > > >> > > > > > >>> > > > satish.dugg...@gmail.com > >> > > > > > >> > > > > > >>> > > > > > wrote: > >> > > > > > >> > > > > > >>> > > > > > > >> > > > > > >> > > > > > >>> > > > > > > Thanks Lucas/Justine for the nice > >> KIP. > >> > > > > > >> > > > > > >>> > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > It has several benefits which > also > >> > > include > >> > > > > > >> > > simplifying > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > >>> topic > >> > > > > > >> > > > > > >>> > > > > > > deletion process by controller > and > >> > logs > >> > > > > > cleanup > >> > > > > > >> by > >> > > > > > >> > > > > brokers > >> > > > > > >> > > > > > in > >> > > > > > >> > > > > > >>> > corner > >> > > > > > >> > > > > > >>> > > > > > > cases. > >> > > > > > >> > > > > > >>> > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > Best, > >> > > > > > >> > > > > > >>> > > > > > > Satish. > >> > > > > > >> > > > > > >>> > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > On Wed, Sep 9, 2020 at 10:07 PM > >> > Justine > >> > > > > > Olshan < > >> > > > > > >> > > > > > >>> > jols...@confluent.io > >> > > > > > >> > > > > > >>> > > > > > > wrote: > >> > > > > > >> > > > > > >>> > > > > > > > Hello all, it's been almost a > >> year! > >> > > I've > >> > > > > > made > >> > > > > > >> > some > >> > > > > > >> > > > > > changes > >> > > > > > >> > > > > > >>> to > >> > > > > > >> > > > > > >>> > this > >> > > > > > >> > > > > > >>> > > > > KIP > >> > > > > > >> > > > > > >>> > > > > > > and hope to continue the > >> discussion. > >> > > > > > >> > > > > > >>> > > > > > > > One of the main changes I've > >> added > >> > is > >> > > > now > >> > > > > > the > >> > > > > > >> > > > metadata > >> > > > > > >> > > > > > >>> response > >> > > > > > >> > > > > > >>> > > > will > >> > > > > > >> > > > > > >>> > > > > > > include the topic ID (as Colin > >> > > suggested). > >> > > > > > >> Clients > >> > > > > > >> > > can > >> > > > > > >> > > > > > >>> obtain the > >> > > > > > >> > > > > > >>> > > > > topicID > >> > > > > > >> > > > > > >>> > > > > > > of a given topic through a > >> > > > TopicDescription. > >> > > > > > The > >> > > > > > >> > > > topicId > >> > > > > > >> > > > > > will > >> > > > > > >> > > > > > >>> > also be > >> > > > > > >> > > > > > >>> > > > > > > included with the UpdateMetadata > >> > > request. > >> > > > > > >> > > > > > >>> > > > > > > > Let me know what you all think. > >> > > > > > >> > > > > > >>> > > > > > > > Thank you, > >> > > > > > >> > > > > > >>> > > > > > > > Justine > >> > > > > > >> > > > > > >>> > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > On 2019/09/13 16:38:26, "Colin > >> > > McCabe" < > >> > > > > > >> > > > > > cmcc...@apache.org > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > wrote: > >> > > > > > >> > > > > > >>> > > > > > > > > Hi Lucas, > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > Thanks for tackling this. > >> Topic > >> > IDs > >> > > > > are a > >> > > > > > >> > great > >> > > > > > >> > > > > idea, > >> > > > > > >> > > > > > >>> and > >> > > > > > >> > > > > > >>> > this > >> > > > > > >> > > > > > >>> > > > is > >> > > > > > >> > > > > > >>> > > > > a > >> > > > > > >> > > > > > >>> > > > > > > really good writeup. > >> > > > > > >> > > > > > >>> > > > > > > > > For /brokers/topics/[topic], > >> the > >> > > > schema > >> > > > > > >> version > >> > > > > > >> > > > > should > >> > > > > > >> > > > > > be > >> > > > > > >> > > > > > >>> > bumped > >> > > > > > >> > > > > > >>> > > > to > >> > > > > > >> > > > > > >>> > > > > > > version 3, rather than 2. > KIP-455 > >> > > bumped > >> > > > > the > >> > > > > > >> > version > >> > > > > > >> > > > of > >> > > > > > >> > > > > > this > >> > > > > > >> > > > > > >>> > znode > >> > > > > > >> > > > > > >>> > > > to > >> > > > > > >> > > > > > >>> > > > > 2 > >> > > > > > >> > > > > > >>> > > > > > > already :) > >> > > > > > >> > > > > > >>> > > > > > > > > Given that we're going to be > >> > seeing > >> > > > > these > >> > > > > > >> > things > >> > > > > > >> > > as > >> > > > > > >> > > > > > >>> strings > >> > > > > > >> > > > > > >>> > as > >> > > > > > >> > > > > > >>> > > > lot > >> > > > > > >> > > > > > >>> > > > > (in > >> > > > > > >> > > > > > >>> > > > > > > logs, in ZooKeeper, on the > >> > command-line, > >> > > > > > etc.), > >> > > > > > >> > does > >> > > > > > >> > > it > >> > > > > > >> > > > > > make > >> > > > > > >> > > > > > >>> > sense to > >> > > > > > >> > > > > > >>> > > > > use > >> > > > > > >> > > > > > >>> > > > > > > base64 when converting them to > >> > strings? > >> > > > > > >> > > > > > >>> > > > > > > > > Here is an example of the hex > >> > > > > > >> representation: > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > 6fcb514b-b878-4c9d-95b7-8dc3a7ce6fd8 > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > And here is an example in > >> base64. > >> > > > > > >> > > > > > >>> > > > > > > > > b8tRS7h4TJ2Vt43Dp85v2A > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > The base64 version saves 15 > >> > letters > >> > > > (to > >> > > > > be > >> > > > > > >> > fair, > >> > > > > > >> > > 4 > >> > > > > > >> > > > of > >> > > > > > >> > > > > > >>> those > >> > > > > > >> > > > > > >>> > were > >> > > > > > >> > > > > > >>> > > > > > > dashes that we could have elided > in > >> > the > >> > > > hex > >> > > > > > >> > > > > > representation.) > >> > > > > > >> > > > > > >>> > > > > > > > > Another thing to consider is > >> that > >> > we > >> > > > > > should > >> > > > > > >> > > specify > >> > > > > > >> > > > > > that > >> > > > > > >> > > > > > >>> the > >> > > > > > >> > > > > > >>> > > > > > > all-zeroes UUID is not a valid > >> topic > >> > > UUID. > >> > > > > > We > >> > > > > > >> > can't > >> > > > > > >> > > > use > >> > > > > > >> > > > > > >>> null > >> > > > > > >> > > > > > >>> > for > >> > > > > > >> > > > > > >>> > > > this > >> > > > > > >> > > > > > >>> > > > > > > because we can't pass a null UUID > >> over > >> > > the > >> > > > > RPC > >> > > > > > >> > > protocol > >> > > > > > >> > > > > > >>> (there > >> > > > > > >> > > > > > >>> > is no > >> > > > > > >> > > > > > >>> > > > > > > special pattern for null, nor do > we > >> > want > >> > > > to > >> > > > > > >> waste > >> > > > > > >> > > space > >> > > > > > >> > > > > > >>> reserving > >> > > > > > >> > > > > > >>> > > > such > >> > > > > > >> > > > > > >>> > > > > a > >> > > > > > >> > > > > > >>> > > > > > > pattern.) > >> > > > > > >> > > > > > >>> > > > > > > > > Maybe I missed it, but did > you > >> > > > describe > >> > > > > > >> > > "migration > >> > > > > > >> > > > > > of... > >> > > > > > >> > > > > > >>> > existing > >> > > > > > >> > > > > > >>> > > > > > > topic[s] without topic IDs" in > >> detail > >> > in > >> > > > any > >> > > > > > >> > section? > >> > > > > > >> > > > It > >> > > > > > >> > > > > > >>> seems > >> > > > > > >> > > > > > >>> > like > >> > > > > > >> > > > > > >>> > > > > when > >> > > > > > >> > > > > > >>> > > > > > > the new controller becomes > active, > >> it > >> > > > should > >> > > > > > >> just > >> > > > > > >> > > > > generate > >> > > > > > >> > > > > > >>> random > >> > > > > > >> > > > > > >>> > > > > UUIDs for > >> > > > > > >> > > > > > >>> > > > > > > these, and write the random UUIDs > >> back > >> > > to > >> > > > > > >> > ZooKeeper. > >> > > > > > >> > > > It > >> > > > > > >> > > > > > >>> would be > >> > > > > > >> > > > > > >>> > > > good > >> > > > > > >> > > > > > >>> > > > > to > >> > > > > > >> > > > > > >>> > > > > > > spell that out. We should make > it > >> > clear > >> > > > > that > >> > > > > > >> this > >> > > > > > >> > > > > happens > >> > > > > > >> > > > > > >>> > regardless > >> > > > > > >> > > > > > >>> > > > > of > >> > > > > > >> > > > > > >>> > > > > > > the inter-broker protocol version > >> > (it's > >> > > a > >> > > > > > >> > compatible > >> > > > > > >> > > > > > change). > >> > > > > > >> > > > > > >>> > > > > > > > > "LeaderAndIsrRequests > >> including an > >> > > > > > >> > > > is_every_partition > >> > > > > > >> > > > > > >>> flag" > >> > > > > > >> > > > > > >>> > > > seems a > >> > > > > > >> > > > > > >>> > > > > > > bit wordy. Can we just call > these > >> > "full > >> > > > > > >> > > > > > >>> LeaderAndIsrRequests"? > >> > > > > > >> > > > > > >>> > Then > >> > > > > > >> > > > > > >>> > > > > the > >> > > > > > >> > > > > > >>> > > > > > > RPC field could be named "full". > >> > Also, > >> > > it > >> > > > > > would > >> > > > > > >> > > > probably > >> > > > > > >> > > > > > be > >> > > > > > >> > > > > > >>> > better > >> > > > > > >> > > > > > >>> > > > > for the > >> > > > > > >> > > > > > >>> > > > > > > RPC field to be an enum of { > >> > > UNSPECIFIED, > >> > > > > > >> > > INCREMENTAL, > >> > > > > > >> > > > > FULL > >> > > > > > >> > > > > > >>> }, so > >> > > > > > >> > > > > > >>> > > > that > >> > > > > > >> > > > > > >>> > > > > we > >> > > > > > >> > > > > > >>> > > > > > > can cleanly handle old versions > (by > >> > > > treating > >> > > > > > >> them > >> > > > > > >> > as > >> > > > > > >> > > > > > >>> UNSPECIFIED) > >> > > > > > >> > > > > > >>> > > > > > > > > In the LeaderAndIsrRequest > >> > section, > >> > > > you > >> > > > > > >> write > >> > > > > > >> > "A > >> > > > > > >> > > > > final > >> > > > > > >> > > > > > >>> > deletion > >> > > > > > >> > > > > > >>> > > > > event > >> > > > > > >> > > > > > >>> > > > > > > will be secheduled for X ms after > >> the > >> > > > > > >> > > > LeaderAndIsrRequest > >> > > > > > >> > > > > > was > >> > > > > > >> > > > > > >>> > first > >> > > > > > >> > > > > > >>> > > > > > > received..." I guess the X was a > >> > > > > placeholder > >> > > > > > >> that > >> > > > > > >> > > you > >> > > > > > >> > > > > > >>> intended > >> > > > > > >> > > > > > >>> > to > >> > > > > > >> > > > > > >>> > > > > replace > >> > > > > > >> > > > > > >>> > > > > > > before posting? :) In any case, > >> this > >> > > > seems > >> > > > > > like > >> > > > > > >> > the > >> > > > > > >> > > > kind > >> > > > > > >> > > > > > of > >> > > > > > >> > > > > > >>> > thing > >> > > > > > >> > > > > > >>> > > > we'd > >> > > > > > >> > > > > > >>> > > > > > > want a configuration for. Let's > >> > > describe > >> > > > > that > >> > > > > > >> > > > > > configuration > >> > > > > > >> > > > > > >>> key > >> > > > > > >> > > > > > >>> > > > > somewhere > >> > > > > > >> > > > > > >>> > > > > > > in this KIP, including what its > >> > default > >> > > > > value > >> > > > > > >> is. > >> > > > > > >> > > > > > >>> > > > > > > > > We should probably also log a > >> > bunch > >> > > of > >> > > > > > >> messages > >> > > > > > >> > > at > >> > > > > > >> > > > > WARN > >> > > > > > >> > > > > > >>> level > >> > > > > > >> > > > > > >>> > > > when > >> > > > > > >> > > > > > >>> > > > > > > something is scheduled for > >> deletion, > >> > as > >> > > > > well. > >> > > > > > >> > (Maybe > >> > > > > > >> > > > > this > >> > > > > > >> > > > > > >>> was > >> > > > > > >> > > > > > >>> > > > > assumed, but > >> > > > > > >> > > > > > >>> > > > > > > it would be good to mention it). > >> > > > > > >> > > > > > >>> > > > > > > > > I feel like there are a few > >> > sections > >> > > > > that > >> > > > > > >> > should > >> > > > > > >> > > be > >> > > > > > >> > > > > > >>> moved to > >> > > > > > >> > > > > > >>> > > > > "rejected > >> > > > > > >> > > > > > >>> > > > > > > alternatives." For example, in > the > >> > > > > > DeleteTopics > >> > > > > > >> > > > section, > >> > > > > > >> > > > > > >>> since > >> > > > > > >> > > > > > >>> > we're > >> > > > > > >> > > > > > >>> > > > > not > >> > > > > > >> > > > > > >>> > > > > > > going to do option 1 or 2, these > >> > should > >> > > be > >> > > > > > moved > >> > > > > > >> > into > >> > > > > > >> > > > > > >>> "rejected > >> > > > > > >> > > > > > >>> > > > > > > alternatives," rather than > >> appearing > >> > > > > inline. > >> > > > > > >> > > Another > >> > > > > > >> > > > > case > >> > > > > > >> > > > > > >>> is > >> > > > > > >> > > > > > >>> > the > >> > > > > > >> > > > > > >>> > > > > "Should > >> > > > > > >> > > > > > >>> > > > > > > we remove topic name from the > >> protocol > >> > > > where > >> > > > > > >> > > possible" > >> > > > > > >> > > > > > >>> section. > >> > > > > > >> > > > > > >>> > This > >> > > > > > >> > > > > > >>> > > > > is > >> > > > > > >> > > > > > >>> > > > > > > clearly discussing a design > >> > alternative > >> > > > that > >> > > > > > >> we're > >> > > > > > >> > > not > >> > > > > > >> > > > > > >>> proposing > >> > > > > > >> > > > > > >>> > to > >> > > > > > >> > > > > > >>> > > > > > > implement: removing the topic > name > >> > from > >> > > > > those > >> > > > > > >> > > > protocols. > >> > > > > > >> > > > > > >>> > > > > > > > > Is it really necessary to > have > >> a > >> > new > >> > > > > > >> > > > > > >>> > /admin/delete_topics_by_id > >> > > > > > >> > > > > > >>> > > > > path > >> > > > > > >> > > > > > >>> > > > > > > in ZooKeeper? It seems like we > >> don't > >> > > > really > >> > > > > > >> need > >> > > > > > >> > > this. > >> > > > > > >> > > > > > >>> Whenever > >> > > > > > >> > > > > > >>> > > > > there is > >> > > > > > >> > > > > > >>> > > > > > > a new controller, we'll send out > >> full > >> > > > > > >> > > > > LeaderAndIsrRequests > >> > > > > > >> > > > > > >>> which > >> > > > > > >> > > > > > >>> > will > >> > > > > > >> > > > > > >>> > > > > > > trigger the stale topics to be > >> cleaned > >> > > up. > >> > > > > > The > >> > > > > > >> > > active > >> > > > > > >> > > > > > >>> > controller > >> > > > > > >> > > > > > >>> > > > will > >> > > > > > >> > > > > > >>> > > > > > > also send the full > >> LeaderAndIsrRequest > >> > > to > >> > > > > > >> brokers > >> > > > > > >> > > that > >> > > > > > >> > > > > are > >> > > > > > >> > > > > > >>> just > >> > > > > > >> > > > > > >>> > > > > starting > >> > > > > > >> > > > > > >>> > > > > > > up. So we don't really need > this > >> > kind > >> > > > of > >> > > > > > >> > two-phase > >> > > > > > >> > > > > > commit > >> > > > > > >> > > > > > >>> > (send > >> > > > > > >> > > > > > >>> > > > out > >> > > > > > >> > > > > > >>> > > > > > > StopReplicasRequest, get ACKs > from > >> all > >> > > > > nodes, > >> > > > > > >> > commit > >> > > > > > >> > > by > >> > > > > > >> > > > > > >>> removing > >> > > > > > >> > > > > > >>> > > > > > > /admin/delete_topics node) any > >> more. > >> > > > > > >> > > > > > >>> > > > > > > > > You mention that FetchRequest > >> will > >> > > now > >> > > > > > >> include > >> > > > > > >> > > UUID > >> > > > > > >> > > > > to > >> > > > > > >> > > > > > >>> avoid > >> > > > > > >> > > > > > >>> > > > issues > >> > > > > > >> > > > > > >>> > > > > > > where requests are made to stale > >> > > > partitions. > >> > > > > > >> > > However, > >> > > > > > >> > > > > > >>> adding a > >> > > > > > >> > > > > > >>> > UUID > >> > > > > > >> > > > > > >>> > > > to > >> > > > > > >> > > > > > >>> > > > > > > MetadataRequest is listed as > future > >> > > work, > >> > > > > out > >> > > > > > of > >> > > > > > >> > > scope > >> > > > > > >> > > > > for > >> > > > > > >> > > > > > >>> this > >> > > > > > >> > > > > > >>> > KIP. > >> > > > > > >> > > > > > >>> > > > > How > >> > > > > > >> > > > > > >>> > > > > > > will the client learn what the > >> topic > >> > > UUID > >> > > > > is, > >> > > > > > if > >> > > > > > >> > the > >> > > > > > >> > > > > > metadata > >> > > > > > >> > > > > > >>> > > > response > >> > > > > > >> > > > > > >>> > > > > > > doesn't include that information? > >> It > >> > > > seems > >> > > > > > like > >> > > > > > >> > > adding > >> > > > > > >> > > > > the > >> > > > > > >> > > > > > >>> UUID > >> > > > > > >> > > > > > >>> > to > >> > > > > > >> > > > > > >>> > > > > > > MetadataResponse would be an > >> > improvement > >> > > > > here > >> > > > > > >> that > >> > > > > > >> > > > might > >> > > > > > >> > > > > > not > >> > > > > > >> > > > > > >>> be > >> > > > > > >> > > > > > >>> > too > >> > > > > > >> > > > > > >>> > > > > hard to > >> > > > > > >> > > > > > >>> > > > > > > make. > >> > > > > > >> > > > > > >>> > > > > > > > > best, > >> > > > > > >> > > > > > >>> > > > > > > > > Colin > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > On Mon, Sep 9, 2019, at > 17:48, > >> > > Ryanne > >> > > > > > Dolan > >> > > > > > >> > > wrote: > >> > > > > > >> > > > > > >>> > > > > > > > > > Lucas, this would be great. > >> I've > >> > > run > >> > > > > > into > >> > > > > > >> > > issues > >> > > > > > >> > > > > with > >> > > > > > >> > > > > > >>> > topics > >> > > > > > >> > > > > > >>> > > > > being > >> > > > > > >> > > > > > >>> > > > > > > > > > resurrected accidentally, > >> since > >> > a > >> > > > > client > >> > > > > > >> > cannot > >> > > > > > >> > > > > > easily > >> > > > > > >> > > > > > >>> > > > > distinguish > >> > > > > > >> > > > > > >>> > > > > > > between > >> > > > > > >> > > > > > >>> > > > > > > > > > a deleted topic and a new > >> topic > >> > > with > >> > > > > the > >> > > > > > >> same > >> > > > > > >> > > > name. > >> > > > > > >> > > > > > I'd > >> > > > > > >> > > > > > >>> > need > >> > > > > > >> > > > > > >>> > > > the > >> > > > > > >> > > > > > >>> > > > > ID > >> > > > > > >> > > > > > >>> > > > > > > > > > accessible from the client > to > >> > > solve > >> > > > > that > >> > > > > > >> > issue, > >> > > > > > >> > > > but > >> > > > > > >> > > > > > >>> this > >> > > > > > >> > > > > > >>> > is a > >> > > > > > >> > > > > > >>> > > > > good > >> > > > > > >> > > > > > >>> > > > > > > first > >> > > > > > >> > > > > > >>> > > > > > > > > > step. > >> > > > > > >> > > > > > >>> > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > Ryanne > >> > > > > > >> > > > > > >>> > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > On Wed, Sep 4, 2019 at 1:41 > >> PM > >> > > Lucas > >> > > > > > >> > > Bradstreet < > >> > > > > > >> > > > > > >>> > > > > lu...@confluent.io> > >> > > > > > >> > > > > > >>> > > > > > > wrote: > >> > > > > > >> > > > > > >>> > > > > > > > > > > Hi all, > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > > I would like to kick off > >> > > > discussion > >> > > > > of > >> > > > > > >> > > KIP-516, > >> > > > > > >> > > > > an > >> > > > > > >> > > > > > >>> > > > > implementation > >> > > > > > >> > > > > > >>> > > > > > > of topic > >> > > > > > >> > > > > > >>> > > > > > > > > > > IDs for Kafka. Topic IDs > >> aim > >> > to > >> > > > > solve > >> > > > > > >> topic > >> > > > > > >> > > > > > >>> uniqueness > >> > > > > > >> > > > > > >>> > > > > problems in > >> > > > > > >> > > > > > >>> > > > > > > Kafka, > >> > > > > > >> > > > > > >>> > > > > > > > > > > where referring to a > topic > >> by > >> > > name > >> > > > > > >> alone is > >> > > > > > >> > > > > > >>> insufficient. > >> > > > > > >> > > > > > >>> > > > Such > >> > > > > > >> > > > > > >>> > > > > > > cases > >> > > > > > >> > > > > > >>> > > > > > > > > > > include when a topic has > >> been > >> > > > > deleted > >> > > > > > >> and > >> > > > > > >> > > > > recreated > >> > > > > > >> > > > > > >>> with > >> > > > > > >> > > > > > >>> > the > >> > > > > > >> > > > > > >>> > > > > same > >> > > > > > >> > > > > > >>> > > > > > > name. > >> > > > > > >> > > > > > >>> > > > > > > > > > > Unique identifiers will > >> help > >> > > > > simplify > >> > > > > > >> and > >> > > > > > >> > > > improve > >> > > > > > >> > > > > > >>> Kafka's > >> > > > > > >> > > > > > >>> > > > topic > >> > > > > > >> > > > > > >>> > > > > > > deletion > >> > > > > > >> > > > > > >>> > > > > > > > > > > process, as well as > prevent > >> > > cases > >> > > > > > where > >> > > > > > >> > > brokers > >> > > > > > >> > > > > may > >> > > > > > >> > > > > > >>> > > > incorrectly > >> > > > > > >> > > > > > >>> > > > > > > interact > >> > > > > > >> > > > > > >>> > > > > > > > > > > with stale versions of > >> topics. > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-516%3A+Topic+Identifiers > >> > > > > > >> > > > > > >>> > > > > > > > > > > Looking forward to your > >> > > thoughts. > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > > > > > > > > > Lucas > >> > > > > > >> > > > > > >>> > > > > > > > > > > > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > > >> > > > > > >> > > > > > >>> > >> > > > > > >> > > > > > >> > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > >> > > > > > >> > > >> > > > > > >> > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > >