Randall, have you considered something like: - introduce TopicCreationPolicy interface, with methods like partitionsForTopic(topic). - provide a DefaultTopicCreationPolicy implementation that implements the current behavior. - provide a SimpleTopicCreationPolicy that honors topic.creation.partitions property, etc. - perhaps also provide a RegexTopicCreationPolicy. - users can provide their own TopicCreationPolicy implementations when necessary. - support topic.creation.policy.class property in worker configs, with default = org.apache.kafka.connect.DefaultTopicCreationPolicy.
This way, the only new configuration property is topic.creation.policy.class. The default behavior doesn't change from what we have today. If a user wants to change from the default, they can opt-in to one of the other policies or implement their own. Ryanne On Tue, Nov 27, 2018 at 6:31 PM Randall Hauch <rha...@gmail.com> wrote: > Thanks for the feedback. Some thoughts inline. > > On Tue, Nov 27, 2018 at 5:47 PM Ewen Cheslack-Postava <e...@confluent.io> > wrote: > > > re: AdminClient vs this proposal, one consideration is that AdminClient > > exposes a lot more surface area and probably a bunch of stuff we actually > > don't want Connectors to be able to do, such as deleting topics. You can > > always lock down by ACLs, but what the framework enables directly vs > > requiring the user to opt in via connector-specific config is an > important > > distinction. > > > > I'm not a fan of how complex the config is (same deal with > > transformations), and agree with Ryanne that any case requiring multiple > > rules is probably an outlier. A cleaner option for the common case might > be > > worth it. One option that's still aligned with the current state of the > KIP > > would be to change the default for topic.creation to a fixed default > value > > (e.g. 'default'), if that's the case turn the > topic.creation.default.regex > > default to .*, and then 99% use case would just be specifying the # of > > partitions with a single config and relying on cluster defaults for the > > rest. (I would suggest the same thing for transformations if we added a > > simple scripting transformation such that most use cases wouldn't need to > > compose multiple transformations.) > > > > I agree that any case requiring multiple rules is probably an outlier, and > I've been trying to think about how to start simple with a single case but > leave room if we really do need multiple rules in the future. I like Ewen's > suggestion a lot. IIUC, it would change the following common case: > > topic.creation=default > topic.creation.default.regex=.* > topic.creation.default.partitions=5 > > into the following: > > topic.creation.default.partitions=5 > > where the replication defaults to 3 and all others default to the brokers' > default topic settings. This is significantly simpler, yet it still allows > us to handle multiple rules if they're needed. > > Another common case is to use compacted topics, so that might required > adding: > > topic.creation.default.cleanup.policy=compact > > Also, I like the idea of defaulting the regex to '.*', but I wonder if it'd > be easier to explain if that default value applied to the *last* rule in > the list of rules, rather than to apply only to the rule named "default" > when that's the only named rule. WDYT? > > > > > > Along related lines, is there actually a need for TopicSettings class? We > > already have NewTopic in the AdminClient APIs. Does that not suffice? > > > > There are three reasons I added TopicSettings and didn't simply use > NewTopic. First, NewTopic is immutable, which makes it impractical for > Connect to pass to a connector and to allow the connector to change it. > Second, TopicSettings is essentially a builder with easy to use and > chainable methods, whereas NewTopic relies upon Map<String, String>, String > constants (in another class), and essentially untyped values. Third, > NewTopic is not an interface, and I think it's better to expose an > interface in the connector API when we don't want/expect connectors to > instantiate the instance and to instead only use what we provide them. > > Now, another option is to move TopicSettings into the > `org.apache.kafka.clients.admin` package and turn it into `NewTopicBuilder` > instead. Then it'd be useful outside of Connect, but is it strange that > it's not in the Connect API packages? > > Randall > > > > > > -Ewen > > > > On Mon, Sep 24, 2018 at 11:56 AM Andrew Otto <o...@wikimedia.org> wrote: > > > > > FWIW, I’d find this feature useful. > > > > > > On Mon, Sep 24, 2018 at 2:42 PM Randall Hauch <rha...@gmail.com> > wrote: > > > > > > > Ryanne, > > > > > > > > If your connector is already using the AdminClient, then you as the > > > > developer have a choice of switching to the new Connect-based > > > functionality > > > > or keeping the existing use of the AdminClient. If the connector uses > > > both > > > > mechanisms (which I wouldn't recommend, simply because of the > > complexity > > > of > > > > it for a user), then the topic will be created by the first mechanism > > to > > > > actually attempt and successfully create the topic(s) in the Kafka > > > cluster > > > > that the Connect worker uses. As mentioned in the KIP, "This feature > > ... > > > > does not change the topic-specific settings on any existing topics." > > IOW, > > > > if the topic already exists, it can't be created again and therefore > > the > > > > `topic.creation.*` properties will not apply for that existing topic. > > > > > > > > > Do these settings apply to internal topics created by the framework > > on > > > > > bahalf of a connector, e.g. via KafkaConfigBackingStore? > > > > > > > > No, they don't, and I'm happy to add a clarification to the KIP if > you > > > feel > > > > it is necessary. > > > > > > > > > I'd have the same questions if e.g. transformations could be > ignored > > or > > > > > overridden by connectors or if there were multiple places to > specify > > > what > > > > > serde to use. > > > > > > > > There are multiple places that converters can be defined: the worker > > > config > > > > defines the key and value converters that will be used for all > > > connectors, > > > > except when a connector defines its own key and value converters. > > > > > > > > > I don't see how controlling topic creation based on topic name is > > > > something > > > > > we should support across all connectors, as if it is some > established > > > > > pattern or universally useful. > > > > > > > > Topics are identified by name, and when you create a topic with > > specific > > > > settings or change a topic's settings you identify the topic by name. > > The > > > > fact that this KIP uses regular expressions to match topic names > > doesn't > > > > seem surprising, since we use regexes elsewhere. > > > > > > > > Best regards > > > > > > > > On Mon, Sep 24, 2018 at 1:24 PM Ryanne Dolan <ryannedo...@gmail.com> > > > > wrote: > > > > > > > > > Randall, > > > > > > > > > > Say I've got a connector that needs to control topic creation. > What I > > > > need > > > > > is an AdminClient s.t. my connector can do what it knows it needs > to > > > do. > > > > > This KIP doesn't address the issues that have been brought up wrt > > > > > configuration, principals, ACL etc, since I'll still need to > > construct > > > my > > > > > own AdminClient. > > > > > > > > > > Should such a connector ignore your proposed configuration > settings? > > > > Should > > > > > it use it's own principal and it's own configuration properties? > How > > > does > > > > > my AdminClient's settings interact with your proposed settings and > > the > > > > > existing cluster settings? > > > > > > > > > > What happens when a user specifies topic creation settings in a > > > connector > > > > > config, but the connector then applies it's own topic creation > logic? > > > Are > > > > > the configurations silently ignored? If not, how can a connector > > honor > > > > your > > > > > proposed settings? > > > > > > > > > > Do these settings apply to internal topics created by the framework > > on > > > > > bahalf of a connector, e.g. via KafkaConfigBackingStore? > > > > > > > > > > When do the cluster settings get applied? Only after 3 layers of > > > > > fall-through? > > > > > > > > > > I'd have the same questions if e.g. transformations could be > ignored > > or > > > > > overridden by connectors or if there were multiple places to > specify > > > what > > > > > serde to use. > > > > > > > > > > I don't see how controlling topic creation based on topic name is > > > > something > > > > > we should support across all connectors, as if it is some > established > > > > > pattern or universally useful. > > > > > > > > > > Ryanne > > > > > > > > > > On Mon, Sep 24, 2018, 10:14 AM Randall Hauch <rha...@gmail.com> > > wrote: > > > > > > > > > > > Hi, Ryanne. My apologies for not responding earlier, as I was on > a > > > long > > > > > > holiday. > > > > > > > > > > > > Thanks for your feedback and questions about this KIP. You've > > raised > > > > > > several points in the discussion so far, so let me try to address > > > most > > > > of > > > > > > them. > > > > > > > > > > > > IIUC, one of your major concerns is that this KIP introduces a > new > > > way > > > > to > > > > > > define configurations for topics. That is true, and the whole > > reason > > > is > > > > > to > > > > > > simply the user experience for people using source connectors. > You > > > > still > > > > > > have the freedom to manually pre-create topics before running a > > > > > connector, > > > > > > or to rely upon the broker automatically creating topics for the > > > > > connectors > > > > > > when those topics don't yet exist -- in both cases, don't include > > > > > anything > > > > > > about topic creation in your connector configurations. In fact, > > when > > > > you > > > > > do > > > > > > this, Connect uses the current behavior by assuming the topics > > exist > > > or > > > > > > will be autocreated with the proper configurations. > > > > > > > > > > > > But for many environments, this existing approach is not enough. > > > First, > > > > > if > > > > > > you're relying upon the broker to autocreate topics, then the > > brokers > > > > > > single set of default topic settings must match the requirements > of > > > > your > > > > > > new topics. This can be difficult when your running multiple > kinds > > of > > > > > > connectors with differing expectations. Consider using a CDC > > > connector > > > > > that > > > > > > expects compaction, a high-volume web service connector that > should > > > not > > > > > use > > > > > > compaction but expects deletion after 7 days, and another > connector > > > > with > > > > > > lower volume that uses 30 day retention. Or, consider connectors > > that > > > > are > > > > > > producing to topics that have very different message > > characteristics: > > > > > > different sizes, different throughputs, different partitions, > etc. > > > The > > > > > only > > > > > > way to work around this is to pre-create the topics, but this > adds > > > more > > > > > > complexity and room for errors, especially when a single instance > > of > > > > some > > > > > > source connectors can write to dozens (or even hundreds) of > topics. > > > > > > > > > > > > Second, many operators prefer (or are required) to disable topic > > > > > > autocreation, since simple mistakes with command line tools can > > > result > > > > in > > > > > > new topics. In this cases, users have no choice but to manually > > > > precreate > > > > > > the topics that complicates the process of running a connector > and, > > > as > > > > > > mentioned above, increases the risk that something goes wrong. > > > > > > > > > > > > Third, the reason why this KIP introduces a way for connector > > > > > > implementations to override some topic settings is because some > > > source > > > > > > connectors have very specific requirements. When I wrote the > first > > > > > Debezium > > > > > > CDC connectors, many first-time users didn't precreate the topics > > as > > > > > > recommended in the documentation, and didn't change their > brokers' > > > > > default > > > > > > topic settings. Only after a few days when they tried reconsuming > > the > > > > > full > > > > > > streams did they realize that Kafka had deleted messages older > than > > > the > > > > > > default retention period. Debezium expects / requires compacted > > > topics, > > > > > so > > > > > > all kinds of things went wrong. Connect is often one of the first > > > ways > > > > in > > > > > > which people get introduced to Kafka, and they simply don't yet > > have > > > an > > > > > > understanding of many of the details that you or I don't have to > > > think > > > > > > twice about. > > > > > > > > > > > > You suggested that maybe Connect should just expose the Admin > API. > > > > That's > > > > > > possible, but IMO it's very heavyweight and complex. The whole > > point > > > of > > > > > > Connect's design is to abstract the connector developer away from > > > most > > > > of > > > > > > the details of Kafka -- it doesn't even expose the producer and > > > > consumer > > > > > > APIs, which are much simpler. IMO it would be a mistake to > require > > > > source > > > > > > connector developers to deal with the Admin API -- I even have > > > trouble > > > > > > writing code that uses it to properly create topics, especially > > > around > > > > > > properly handling all of the potential error conditions. > > > > > > > > > > > > You also mention that topic settings in a connector configuration > > > might > > > > > not > > > > > > reflect the actual topic's settings. This is true, especially if > > the > > > > > topic > > > > > > already existed with different settings before the connector was > > run. > > > > > > However, this is also very true of the broker's default topic > > > settings, > > > > > > which very often don't reflect the actual settings for all of the > > > > topics > > > > > -- > > > > > > the defaults may have been changed, or topics are created > manually > > > with > > > > > > very different settings. The only way to know the settings of a > > > > > particular > > > > > > topic are to get them for that topic. > > > > > > > > > > > > The use of naming rules in the topic creation settings is > > > intentional, > > > > > and > > > > > > it allows connector users to define topic settings for topics > based > > > > upon > > > > > > the names. In some cases this may require several rules to handle > > the > > > > > > different topics, but most of the time a single rule may be all > > > that's > > > > > > required. I also don't agree that users will start naming topics > to > > > > > > simplify their rules -- many source connectors that write to more > > > than > > > > > one > > > > > > topic often don't allow the user to specify the full name of the > > > topics > > > > > > anyway, and when they do they often only write to one topic. > > > > > > > > > > > > I still think that the proposed KIP provides a simple way for > most > > > > source > > > > > > connector users to control (via configuration) the settings of > the > > > > topics > > > > > > that will be created by Connect for that connector, which works > > with > > > > all > > > > > > existing source connectors out of the box and does not add > > additional > > > > > > complexities for source connector developers. > > > > > > > > > > > > Best regards, > > > > > > > > > > > > Randall > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Sep 12, 2018 at 12:22 PM Ryanne Dolan < > > ryannedo...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > Rather than go though the connect framework, connectors > should > > > just > > > > > > > create their own AdminClient instance and create their own > > topics? > > > > > > > > > > > > > > Rather, can the framework be improved to expose an AdminClient > > > ready > > > > to > > > > > > > use? Then connectors can use this instance without needing > > separate > > > > > > > identities/principals and associated configuration (which I > > totally > > > > > > > understand would be a nightmare). I believe that covers all the > > > > > > use-cases? > > > > > > > > > > > > > > I just don't see how the "terrible config situation" is > remedied > > by > > > > > > adding > > > > > > > even more configuration. > > > > > > > > > > > > > > Also, I'm not sure I can conceive of a use-case in which a > single > > > > > > connector > > > > > > > would need multiple default topic settings *based on the topic > > > name*. > > > > > Can > > > > > > > you give a real-world example? Is this something you've > > > encountered, > > > > or > > > > > > are > > > > > > > you just trying for a flexible design? > > > > > > > > > > > > > > Ryanne > > > > > > > > > > > > > > On Tue, Sep 11, 2018 at 9:57 PM Gwen Shapira < > g...@confluent.io> > > > > > wrote: > > > > > > > > > > > > > > > Hi Ryanne, > > > > > > > > > > > > > > > > Thanks for the feedback! > > > > > > > > > > > > > > > > Can you explain a bit more what you mean by "if we allow > > > connectors > > > > > to > > > > > > > make > > > > > > > > this > > > > > > > > decision, they should have full control of the process."? > > > > > > > > > > > > > > > > I assume you mean, something like: > > > > > > > > Rather than go though the connect framework, connectors > should > > > just > > > > > > > create > > > > > > > > their own AdminClient instance and create their own topics? > > > > > > > > > > > > > > > > The problem with this approach is that connectors currently > > don't > > > > > have > > > > > > > > their own identity (in the authentication/authorization > sense). > > > All > > > > > > > > connectors share the framework identity, if the users need to > > > start > > > > > > > > configuring security for both the framework and connect > itself, > > > it > > > > > gets > > > > > > > > messy rather quickly. > > > > > > > > We actually already do the thing I'm imagining you suggested > in > > > > some > > > > > > > > connectors right now (create AdminClient and configure > topics), > > > and > > > > > we > > > > > > > hope > > > > > > > > to use the new framework capability to clean-up the > > configuration > > > > > mess > > > > > > > this > > > > > > > > has caused. I spent 4 days trying to figure out what a > specific > > > > > > connector > > > > > > > > doesn't work, just to find out that you need to give it its > own > > > > > > security > > > > > > > > config because it has an AdminClient so the configuration on > > the > > > > > > > framework > > > > > > > > isn't enough. > > > > > > > > > > > > > > > > From my experience with rather large number of customers, > there > > > are > > > > > > some > > > > > > > > companies where the topics are controlled by a central team > > that > > > > owns > > > > > > all > > > > > > > > the machinery to create and configure topics (sometimes via > > > gitops, > > > > > > > > kubernetes custom resources, etc) and they would indeed be > very > > > > > > surprised > > > > > > > > if a connector suddenly had opinions about topics. There are > > also > > > > > teams > > > > > > > > where the application developers feel like they know their > data > > > and > > > > > > > > use-case the best and they are in-charge of making all > > > topic-level > > > > > > > > decisions, usually automated by the app itself. Admin client > > was > > > > > > created > > > > > > > > for those teams and I think they'll appreciate having this > > > > capability > > > > > > in > > > > > > > > connect too. Funny thing is, customers who work with one > model > > > > > usually > > > > > > > > can't believe the other model even exists. > > > > > > > > > > > > > > > > I'd love to propose a compromise and suggest that we'll allow > > > this > > > > > > > > functionality in Connect but also give ops teams the option > to > > > > > disable > > > > > > it > > > > > > > > and avoid surprises. But I'm afraid this wont work - too > often > > > the > > > > > > > defaults > > > > > > > > are just terrible for specific connectors (CDC connectors > > > sometimes > > > > > > need > > > > > > > a > > > > > > > > single partition to maintain consistency) and if there is a > > > chance > > > > > the > > > > > > > > connector preference won't be used, connectors will have to > > force > > > > it > > > > > > via > > > > > > > > admin client which brings us back to the terrible config > > > situation > > > > we > > > > > > > > currently have with Admin client. > > > > > > > > > > > > > > > > Gwen > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Sep 11, 2018 at 7:23 PM, Ryanne Dolan < > > > > ryannedo...@gmail.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > Randall, > > > > > > > > > > > > > > > > > > I have some concerns with this proposal. > > > > > > > > > > > > > > > > > > Firstly, I don't believe it is the job of a connector to > > > > configure > > > > > > > > topics, > > > > > > > > > generally, nor for topic-specific settings to hang out in > > > > connector > > > > > > > > > configurations. Automatic creation of topics with default > > > > settings > > > > > is > > > > > > > an > > > > > > > > > established pattern elsewhere, and I don't think connectors > > > need > > > > to > > > > > > > > diverge > > > > > > > > > from this. > > > > > > > > > > > > > > > > > > I agree there are cases where the default settings don't > make > > > > sense > > > > > > and > > > > > > > > > it'd be nice to override them. But if we allow connectors > to > > > make > > > > > > this > > > > > > > > > decision, they should have full control of the process. > > > > > > > > > > > > > > > > > > Some concerns: > > > > > > > > > - I'd expect the cluster's default settings to apply to > newly > > > > > created > > > > > > > > > topics, regardless of who created them. I wouldn't expect > > > source > > > > > > > > connectors > > > > > > > > > to be a special case. In particular, I'd be surprised if > > Kafka > > > > > > Connect > > > > > > > > were > > > > > > > > > to ignore my cluster's default settings and apply its own > > > > defaults. > > > > > > > > > - It will be possible to add a specific topic to this > > > > > configuration, > > > > > > in > > > > > > > > > which case any reader would expect the topic to have the > > > > specified > > > > > > > > > settings. But this will not generally be true. Thus, the > > > > > > configuration > > > > > > > > will > > > > > > > > > end up lying and misleading, and there won't be any > > indication > > > > that > > > > > > the > > > > > > > > > configuration is lying. > > > > > > > > > - Connectors that want to control settings will end up > naming > > > > > topics > > > > > > > > > accordingly. For example, a connector that wants to control > > the > > > > > > number > > > > > > > of > > > > > > > > > partitions would need a bunch of creation rules for 1 > > > partition, > > > > 2 > > > > > > > > > partitions and so on. This is a bad pattern to establish. A > > > > better > > > > > > > > pattern > > > > > > > > > is to let the connector control the number of partitions > > > directly > > > > > > when > > > > > > > > that > > > > > > > > > feature is required. > > > > > > > > > - The proposal introduces 2 new interfaces to control topic > > > > > creation > > > > > > > > > (configuration rules and TopicSettings), where there is > > > already a > > > > > > > > perfectly > > > > > > > > > good one (AdminClient). > > > > > > > > > > > > > > > > > > Ryanne > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Sep 4, 2018 at 5:08 PM Randall Hauch < > > rha...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Okay, I think I cleaned up the formatting issues in the > KIP > > > > wiki > > > > > > > page. > > > > > > > > > And > > > > > > > > > > while implementing I realized that it'd be helpful to be > > able > > > > to > > > > > > > limit > > > > > > > > > via > > > > > > > > > > the connector configuration and the rules which topics > are > > > > > > created. I > > > > > > > > > added > > > > > > > > > > the `topic.creation.${ruleName}.policy` behavior, with > > > possible > > > > > > > values > > > > > > > > > of > > > > > > > > > > "create" (the default), "autocreate" (to specify that > > Connect > > > > > > should > > > > > > > > let > > > > > > > > > > the broker autocreate any matching topics), and "fail" > (to > > > > > specify > > > > > > > that > > > > > > > > > > Connect should not allow the creation of topics whose > names > > > > match > > > > > > the > > > > > > > > > > rule's regular expression). > > > > > > > > > > > > > > > > > > > > Let me know what you think. I'd like to start voting > soon, > > > but > > > > > > > because > > > > > > > > I > > > > > > > > > > made the above change I'll wait a few days. > > > > > > > > > > > > > > > > > > > > Best regards, > > > > > > > > > > > > > > > > > > > > Randall > > > > > > > > > > > > > > > > > > > > On Wed, Aug 29, 2018 at 9:41 PM Randall Hauch < > > > > rha...@gmail.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Thanks, Magesh. > > > > > > > > > > > > > > > > > > > > > > All, I've made a few very minor changes to some > JavaDocs > > > and > > > > > the > > > > > > > > > > > signatures of the name-value pair methods in > > TopicSettings > > > > > > > > interface. I > > > > > > > > > > > also described as a fifth rejected alternative why this > > KIP > > > > > does > > > > > > > not > > > > > > > > > > modify > > > > > > > > > > > any topic settings for existing topics. All of these > are > > > > pretty > > > > > > > > minor, > > > > > > > > > > but > > > > > > > > > > > I'm happy to hear about issues or suggestions. > > > > > > > > > > > > > > > > > > > > > > Since the above changes were very minor, I'll kick off > a > > > vote > > > > > to > > > > > > > > accept > > > > > > > > > > > this KIP unless I hear something in the next day or > two. > > > Note > > > > > > that > > > > > > > > this > > > > > > > > > > KIP > > > > > > > > > > > has been around in virtually the exact form for over a > > > year. > > > > > > > > > > > > > > > > > > > > > > Best regards, > > > > > > > > > > > > > > > > > > > > > > Randall > > > > > > > > > > > > > > > > > > > > > > On Wed, Aug 29, 2018 at 9:17 PM Magesh Nandakumar < > > > > > > > > > mage...@confluent.io> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > >> Randall, > > > > > > > > > > >> > > > > > > > > > > >> I originally thought that this proposal was a config > > only > > > > > topic > > > > > > > > > settings > > > > > > > > > > >> and hence made the comment about configs being pass > > > > through. I > > > > > > > just > > > > > > > > > > >> realized that the connectors can also override and > > provide > > > > the > > > > > > > > > > >> TopicSettings. With that in mind, I think the proposal > > > looks > > > > > > > great. > > > > > > > > > > >> Looking forward to the feature. > > > > > > > > > > >> > > > > > > > > > > >> Thanks, > > > > > > > > > > >> Magesh > > > > > > > > > > >> > > > > > > > > > > >> On Tue, Aug 28, 2018 at 8:53 PM Magesh Nandakumar < > > > > > > > > > mage...@confluent.io > > > > > > > > > > > > > > > > > > > > > >> wrote: > > > > > > > > > > >> > > > > > > > > > > >> > I was wondering if it would be much simpler to just > > do a > > > > > > > > > pass-through > > > > > > > > > > so > > > > > > > > > > >> > that we can support any topic setting added in Kafka > > > > without > > > > > > any > > > > > > > > > code > > > > > > > > > > >> > changes in connect. Since these are for topics that > > will > > > > > have > > > > > > > the > > > > > > > > > > actual > > > > > > > > > > >> > data stream, users might possibly need more > > flexibility > > > in > > > > > > terms > > > > > > > > of > > > > > > > > > > how > > > > > > > > > > >> the > > > > > > > > > > >> > topics get created. > > > > > > > > > > >> > > > > > > > > > > > >> > Thanks > > > > > > > > > > >> > Magesh > > > > > > > > > > >> > > > > > > > > > > > >> > On Tue, Aug 28, 2018 at 4:56 PM Randall Hauch < > > > > > > rha...@gmail.com > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > >> > > > > > > > > > > > >> >> Do you think we should support name-value pairs, > too? > > > > > > > > > > >> >> > > > > > > > > > > >> >> On Tue, Aug 28, 2018 at 6:41 PM Magesh Nandakumar < > > > > > > > > > > >> mage...@confluent.io> > > > > > > > > > > >> >> wrote: > > > > > > > > > > >> >> > > > > > > > > > > >> >> > Randall, > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > Thanks a lot for the KIP. I think this would be a > > > great > > > > > > > > addition > > > > > > > > > > for > > > > > > > > > > >> >> many > > > > > > > > > > >> >> > source connectors. > > > > > > > > > > >> >> > One clarification I had was regarding the topic > > > > settings > > > > > > that > > > > > > > > can > > > > > > > > > > be > > > > > > > > > > >> >> > configured. Is it limited to the setting exposed > in > > > the > > > > > > > > > > TopicSettings > > > > > > > > > > >> >> > interface? > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > Thanks > > > > > > > > > > >> >> > Magesh > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > On Tue, Aug 21, 2018 at 7:59 PM Randall Hauch < > > > > > > > > rha...@gmail.com> > > > > > > > > > > >> wrote: > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > Okay, after much delay let's try this again for > > AK > > > > 2.1. > > > > > > Has > > > > > > > > > > anyone > > > > > > > > > > >> >> found > > > > > > > > > > >> >> > > any concerns? Stephane suggested that we allow > > > > updating > > > > > > > topic > > > > > > > > > > >> >> > > configurations (everything but partition > count). > > > I'm > > > > > > > > > unconvinced > > > > > > > > > > >> that > > > > > > > > > > >> >> > it's > > > > > > > > > > >> >> > > worth the additional complexity in the > > > implementation > > > > > and > > > > > > > the > > > > > > > > > > >> >> > documentation > > > > > > > > > > >> >> > > to explain the behavior. Changing several of > the > > > > > > > > topic-specific > > > > > > > > > > >> >> > > configurations have significant impact on > broker > > > > > > behavior / > > > > > > > > > > >> >> > functionality, > > > > > > > > > > >> >> > > so IMO we need to proceed more cautiously. > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > Stephane, do you have a particular use case in > > mind > > > > for > > > > > > > > > updating > > > > > > > > > > >> topic > > > > > > > > > > >> >> > > configurations on an existing topic? > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > Randall > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > On Fri, Jan 26, 2018 at 4:20 PM Randall Hauch < > > > > > > > > > rha...@gmail.com> > > > > > > > > > > >> >> wrote: > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > The KIP deadline for 1.1 has already passed, > > but > > > > I'd > > > > > > like > > > > > > > > to > > > > > > > > > > >> restart > > > > > > > > > > >> >> > this > > > > > > > > > > >> >> > > > discussion so that we make the next release. > > I've > > > > not > > > > > > yet > > > > > > > > > > >> addressed > > > > > > > > > > >> >> the > > > > > > > > > > >> >> > > > previous comment about *existing* topics, but > > > I'll > > > > > try > > > > > > to > > > > > > > > do > > > > > > > > > > that > > > > > > > > > > >> >> over > > > > > > > > > > >> >> > > the > > > > > > > > > > >> >> > > > next few weeks. Any other > > > > > > comments/suggestions/questions? > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > Best regards, > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > Randall > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > On Thu, Oct 5, 2017 at 12:13 AM, Randall > Hauch > > < > > > > > > > > > > rha...@gmail.com > > > > > > > > > > >> > > > > > > > > > > > >> >> > wrote: > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > >> Oops. Yes, I meant “replication factor”. > > > > > > > > > > >> >> > > >> > > > > > > > > > > >> >> > > >> > On Oct 4, 2017, at 7:18 PM, Ted Yu < > > > > > > > yuzhih...@gmail.com > > > > > > > > > > > > > > > > > > > >> wrote: > > > > > > > > > > >> >> > > >> > > > > > > > > > > > >> >> > > >> > Randall: > > > > > > > > > > >> >> > > >> > bq. AdminClient currently allows changing > > the > > > > > > > > replication > > > > > > > > > > >> >> factory. > > > > > > > > > > >> >> > > >> > > > > > > > > > > > >> >> > > >> > By 'replication factory' did you mean > > > > 'replication > > > > > > > > > factor' ? > > > > > > > > > > >> >> > > >> > > > > > > > > > > > >> >> > > >> > Cheers > > > > > > > > > > >> >> > > >> > > > > > > > > > > > >> >> > > >> >> On Wed, Oct 4, 2017 at 9:58 AM, Randall > > > Hauch < > > > > > > > > > > >> rha...@gmail.com > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > >> wrote: > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >> Currently the KIP's scope is only topics > > that > > > > > don't > > > > > > > yet > > > > > > > > > > >> exist, > > > > > > > > > > >> >> and > > > > > > > > > > >> >> > we > > > > > > > > > > >> >> > > >> have > > > > > > > > > > >> >> > > >> >> to cognizant of race conditions between > > tasks > > > > > with > > > > > > > the > > > > > > > > > same > > > > > > > > > > >> >> > > connector. > > > > > > > > > > >> >> > > >> I > > > > > > > > > > >> >> > > >> >> think it is worthwhile to consider > whether > > > the > > > > > > KIP's > > > > > > > > > scope > > > > > > > > > > >> >> should > > > > > > > > > > >> >> > > >> expand to > > > > > > > > > > >> >> > > >> >> also address *existing* partitions, > though > > it > > > > may > > > > > > not > > > > > > > > be > > > > > > > > > > >> >> > appropriate > > > > > > > > > > >> >> > > to > > > > > > > > > > >> >> > > >> >> have as much control when changing the > > topic > > > > > > settings > > > > > > > > for > > > > > > > > > > an > > > > > > > > > > >> >> > existing > > > > > > > > > > >> >> > > >> >> topic. For example, changing the number > of > > > > > > partitions > > > > > > > > > > (which > > > > > > > > > > >> the > > > > > > > > > > >> >> > KIP > > > > > > > > > > >> >> > > >> >> considers a "topic-specific setting" even > > > > though > > > > > > > > > > technically > > > > > > > > > > >> it > > > > > > > > > > >> >> is > > > > > > > > > > >> >> > > not) > > > > > > > > > > >> >> > > >> >> shouldn't be done blindly due to the > > > > partitioning > > > > > > > > > impacts, > > > > > > > > > > >> and > > > > > > > > > > >> >> IIRC > > > > > > > > > > >> >> > > you > > > > > > > > > > >> >> > > >> >> can't reduce them (which we could verify > > > before > > > > > > > > > applying). > > > > > > > > > > >> >> Also, I > > > > > > > > > > >> >> > > >> don't > > > > > > > > > > >> >> > > >> >> think the AdminClient currently allows > > > changing > > > > > the > > > > > > > > > > >> replication > > > > > > > > > > >> >> > > >> factory. I > > > > > > > > > > >> >> > > >> >> think changing the topic configs is less > > > > > > problematic > > > > > > > > both > > > > > > > > > > >> from > > > > > > > > > > >> >> what > > > > > > > > > > >> >> > > >> makes > > > > > > > > > > >> >> > > >> >> sense for connectors to verify/change and > > > from > > > > > what > > > > > > > the > > > > > > > > > > >> >> AdminClient > > > > > > > > > > >> >> > > >> >> supports. > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >> Even if we decide that it's not > appropriate > > > to > > > > > > change > > > > > > > > the > > > > > > > > > > >> >> settings > > > > > > > > > > >> >> > on > > > > > > > > > > >> >> > > >> an > > > > > > > > > > >> >> > > >> >> existing topic, I do think it's > > advantageous > > > to > > > > > at > > > > > > > > least > > > > > > > > > > >> notify > > > > > > > > > > >> >> the > > > > > > > > > > >> >> > > >> >> connector (or task) prior to the first > > record > > > > > sent > > > > > > > to a > > > > > > > > > > given > > > > > > > > > > >> >> topic > > > > > > > > > > >> >> > > so > > > > > > > > > > >> >> > > >> that > > > > > > > > > > >> >> > > >> >> the connector can fail or issue a warning > > if > > > it > > > > > > > doesn't > > > > > > > > > > meet > > > > > > > > > > >> its > > > > > > > > > > >> >> > > >> >> requirements. > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >> Best regards, > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >> Randall > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >> On Wed, Oct 4, 2017 at 12:52 AM, Stephane > > > > Maarek > > > > > < > > > > > > > > > > >> >> > > >> >> steph...@simplemachines.com.au> wrote: > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> >>> Hi Randall, > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> Thanks for the KIP. I like it > > > > > > > > > > >> >> > > >> >>> What happens when the target topic is > > > already > > > > > > > created > > > > > > > > > but > > > > > > > > > > >> the > > > > > > > > > > >> >> > > configs > > > > > > > > > > >> >> > > >> do > > > > > > > > > > >> >> > > >> >>> not match? > > > > > > > > > > >> >> > > >> >>> i.e. wrong RF, num partitions, or > missing > > / > > > > > > > additional > > > > > > > > > > >> configs? > > > > > > > > > > >> >> > Will > > > > > > > > > > >> >> > > >> you > > > > > > > > > > >> >> > > >> >>> attempt to apply the necessary changes > or > > > > throw > > > > > an > > > > > > > > > error? > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> Thanks! > > > > > > > > > > >> >> > > >> >>> Stephane > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> On 24/5/17, 5:59 am, "Mathieu Fenniak" > < > > > > > > > > > > >> >> > > mathieu.fenn...@replicon.com > > > > > > > > > > >> >> > > >> > > > > > > > > > > > >> >> > > >> >>> wrote: > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> Ah, yes, I see you a highlighted part > > > that > > > > > > > > should've > > > > > > > > > > made > > > > > > > > > > >> >> this > > > > > > > > > > >> >> > > >> clear > > > > > > > > > > >> >> > > >> >>> to me the first read. :-) Much > clearer > > > > now! > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> By the way, enjoyed your Debezium > talk > > in > > > > > NYC. > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> Looking forward to this Kafka Connect > > > > change; > > > > > > it > > > > > > > > will > > > > > > > > > > >> allow > > > > > > > > > > >> >> me > > > > > > > > > > >> >> > to > > > > > > > > > > >> >> > > >> >>> remove a post-deployment tool that I > > > hacked > > > > > > > > together > > > > > > > > > > for > > > > > > > > > > >> the > > > > > > > > > > >> >> > > >> purpose > > > > > > > > > > >> >> > > >> >>> of ensuring auto-created topics have > > the > > > > > right > > > > > > > > > config. > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> Mathieu > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> On Tue, May 23, 2017 at 11:38 AM, > > Randall > > > > > > Hauch < > > > > > > > > > > >> >> > > rha...@gmail.com> > > > > > > > > > > >> >> > > >> >>> wrote: > > > > > > > > > > >> >> > > >> >>>> Thanks for the quick feedback, Mathieu. > > > Yes, > > > > > the > > > > > > > > first > > > > > > > > > > >> >> > > >> >> configuration > > > > > > > > > > >> >> > > >> >>> rule > > > > > > > > > > >> >> > > >> >>>> whose regex matches will be applied, > and > > no > > > > > other > > > > > > > > rules > > > > > > > > > > >> will > > > > > > > > > > >> >> be > > > > > > > > > > >> >> > > >> >>> used. I've > > > > > > > > > > >> >> > > >> >>>> updated the KIP to try to make this > more > > > > clear, > > > > > > but > > > > > > > > let > > > > > > > > > > me > > > > > > > > > > >> >> know > > > > > > > > > > >> >> > if > > > > > > > > > > >> >> > > >> >>> it's > > > > > > > > > > >> >> > > >> >>>> still not clear. > > > > > > > > > > >> >> > > >> >>>> > > > > > > > > > > >> >> > > >> >>>> Best regards, > > > > > > > > > > >> >> > > >> >>>> > > > > > > > > > > >> >> > > >> >>>> Randall > > > > > > > > > > >> >> > > >> >>>> > > > > > > > > > > >> >> > > >> >>>> On Tue, May 23, 2017 at 10:07 AM, > Mathieu > > > > > > Fenniak < > > > > > > > > > > >> >> > > >> >>>> mathieu.fenn...@replicon.com> wrote: > > > > > > > > > > >> >> > > >> >>>> > > > > > > > > > > >> >> > > >> >>>>> Hi Randall, > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> Awesome, very much looking forward to > > > this. > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> It isn't 100% clear from the KIP how > > > > multiple > > > > > > > > > > config-based > > > > > > > > > > >> >> rules > > > > > > > > > > >> >> > > >> >>> would > > > > > > > > > > >> >> > > >> >>>>> be applied; it looks like the first > > > > > > configuration > > > > > > > > rule > > > > > > > > > > >> whose > > > > > > > > > > >> >> > regex > > > > > > > > > > >> >> > > >> >>>>> matches the topic name will be used, > and > > > no > > > > > > other > > > > > > > > > rules > > > > > > > > > > >> will > > > > > > > > > > >> >> be > > > > > > > > > > >> >> > > >> >>>>> applied. Is that correct? (I wasn't > > sure > > > > if > > > > > it > > > > > > > > might > > > > > > > > > > >> >> cascade > > > > > > > > > > >> >> > > >> >>>>> together multiple matching rules...) > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> Looks great, > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> Mathieu > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>>>> On Mon, May 22, 2017 at 1:43 PM, > Randall > > > > > Hauch < > > > > > > > > > > >> >> > rha...@gmail.com> > > > > > > > > > > >> >> > > >> >>> wrote: > > > > > > > > > > >> >> > > >> >>>>>> Hi, all. > > > > > > > > > > >> >> > > >> >>>>>> > > > > > > > > > > >> >> > > >> >>>>>> We recently added the ability for > Kafka > > > > > Connect > > > > > > > to > > > > > > > > > > create > > > > > > > > > > >> >> > > >> >>> *internal* > > > > > > > > > > >> >> > > >> >>>>> topics > > > > > > > > > > >> >> > > >> >>>>>> using the new AdminClient, but it > still > > > > would > > > > > > be > > > > > > > > > great > > > > > > > > > > if > > > > > > > > > > >> >> Kafka > > > > > > > > > > >> >> > > >> >>> Connect > > > > > > > > > > >> >> > > >> >>>>>> could do this for new topics that > > result > > > > from > > > > > > > > source > > > > > > > > > > >> >> connector > > > > > > > > > > >> >> > > >> >>> records. > > > > > > > > > > >> >> > > >> >>>>>> I've outlined an approach to do this > in > > > > > > "KIP-158 > > > > > > > > > Kafka > > > > > > > > > > >> >> Connect > > > > > > > > > > >> >> > > >> >>> should > > > > > > > > > > >> >> > > >> >>>>> allow > > > > > > > > > > >> >> > > >> >>>>>> source connectors to set > topic-specific > > > > > > settings > > > > > > > > for > > > > > > > > > > new > > > > > > > > > > >> >> > > >> >> topics". > > > > > > > > > > >> >> > > >> >>>>>> > > > > > > > > > > >> >> > > >> >>>>>> * > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP- > > > > > > > > > > >> >> > > >> >>>>> 158%3A+Kafka+Connect+should+ > > > > > > > > > allow+source+connectors+to+ > > > > > > > > > > >> >> > > >> >>>>> > > set+topic-specific+settings+for+new+topics > > > > > > > > > > >> >> > > >> >>>>>> < > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP- > > > > > > > > > > >> >> > > >> >>>>> 158%3A+Kafka+Connect+should+ > > > > > > > > > allow+source+connectors+to+ > > > > > > > > > > >> >> > > >> >>>>> > > > set+topic-specific+settings+for+new+topics>* > > > > > > > > > > >> >> > > >> >>>>>> > > > > > > > > > > >> >> > > >> >>>>>> Please take a look and provide > > feedback. > > > > > > Thanks! > > > > > > > > > > >> >> > > >> >>>>>> > > > > > > > > > > >> >> > > >> >>>>>> Best regards, > > > > > > > > > > >> >> > > >> >>>>>> > > > > > > > > > > >> >> > > >> >>>>>> Randall > > > > > > > > > > >> >> > > >> >>>>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >>> > > > > > > > > > > >> >> > > >> >> > > > > > > > > > > >> >> > > >> > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > *Gwen Shapira* > > > > > > > > Product Manager | Confluent > > > > > > > > 650.450.2760 <(650)%20450-2760> | @gwenshap > > > > > > > > Follow us: Twitter <https://twitter.com/ConfluentInc> | blog > > > > > > > > <http://www.confluent.io/blog> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >