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>
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to