Hi, Jiunn-Yang and Chia-Ping,

Thanks for the reply.

JR34. Sounds good.

JR36. Could you document that the default value for
sasl.oauthbearer.expected.audience and ssl.cipher.suites have been changed?

JR38. My concern wasn't quite addressed. "If the configuration is optional,
we will reject any duplicate values in the list." This implies that if a
config is optional, we allow empty lists. However, for plugin.path, we
reject empty lists.

JR39. We can remove the fields isEmptyAllowed and isNullAllowed since they
are not public facing.

Jun


On Tue, Jul 22, 2025 at 4:26 AM 黃竣陽 <s7133...@gmail.com> wrote:

> Hello Jun, Chia,
>
> Thanks for the reply,
>
> JR36: I’ve updated the following configurations:
> - sasl.oauthbearer.expected.audience
> - ssl.cipher.suites
> - ssl.enabled.protocols
> These now allow both empty and non-empty lists. Since the default values
> of
> sasl.oauthbearer.expected.audience and ssl.cipher.suites were previously
> null,
> I’ve updated their defaults to List.of() for consistency.
>
> JR37: A ClassCastException does not occur in MirrorClientConfig and it
> should be none.
> I’ve updated this in the KIP.
>
> JR38 & JR40: I’ve added a note below the table to indicate which
> configurations require special attention.
>
> JR39: Yes, these properties are package-private.
>
> Best Regards,
> Jiunn-Yang
>
> > Chia-Ping Tsai <chia7...@gmail.com> 於 2025年7月22日 下午6:04 寫道:
> >
> > JR34. Hmm, it seems that the code in taskConfigs() could return an empty
> > list for a task if knownSourceTopicPartitions is less than maxTasks,
> > Chia-Ping?
> >
> >
> > Yes, `MirrorSourceConnector#taskConfigs` could return an empty list,
> which
> > means no `MirrorSourceTask` can be created.
> >
> > By contrast, if any `MirrorSourceTask` is created, the configs used by
> > `MirrorSourceTask` must contain `task.assigned.partitions` with a
> non-empty
> > value.
> >
> > Jun Rao <j...@confluent.io.invalid> 於 2025年7月22日 週二 上午5:14寫道:
> >
> >> Hi, Jiunn-Yang and Chia-Ping,
> >>
> >> Thanks for the reply.
> >>
> >> JR34. Hmm, it seems that the code in taskConfigs() could return an empty
> >> list for a task if knownSourceTopicPartitions is less than maxTasks,
> >> Chia-Ping?
> >>
> >> JR36. Sounds good. Could you update the KIP? Also, should we do the same
> >> for ssl.cipher.suites and sasl.oauthbearer.expected.audience?
> >>
> >> JR37. Is it true that MirrorClientConfig.bootstrap.servers returns
> >> ClassCastException for null? It seems that null could be casted to any
> >> class.
> >>
> >> JR38. "If the configuration is optional, we will reject any duplicate
> >> values in the list." Could you clarify this? For example, plugin.path is
> >> optional, but with a default value. We reject duplicates as well as
> empty
> >> lists.
> >>
> >> JR39. isEmptyAllowed and isNullAllowed are not public fields, right?
> They
> >> are only public in the anyNonDuplicateValues() method.
> >>
> >> JR40. It would be useful to mention that if cleanup.policy is empty and
> >> remote.storage.enable is true, the local log segments will be cleaned
> based
> >> on log.local.retention.bytes and log.local.retention.ms.
> >>
> >> Jun
> >>
> >> On Fri, Jul 18, 2025 at 9:52 AM Chia-Ping Tsai <chia7...@gmail.com>
> wrote:
> >>
> >>>>
> >>>> JR34: For these two configurations, setting an empty list feels a bit
> >>>> unintuitive. If an empty list is
> >>>> provided, the consumer will call the unsubscribe method, which doesn't
> >>>> seem appropriate given
> >>>> the documentation states: "Topic-partitions assigned to this task to
> >>>> replicate."
> >>>>
> >>>
> >>> agreed. Additionally, the source code [0] shows that it is not intended
> >> to
> >>> generate empty tps for the source task
> >>>
> >>> [0]
> >>>
> >>>
> >>
> https://github.com/apache/kafka/blob/9b542b6ea21e84677a9292f250fc25f8b4162e6f/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceConnector.java#L202
> >>>
> >>
>
>

Reply via email to