Rather than raise the protocol version, there’s a feature flag mechanism in
the connect/connected handshake for this purpose

--
Matteo Merli
<matteo.me...@gmail.com>


On Thu, Feb 29, 2024 at 6:38 AM PengHui Li <peng...@apache.org> wrote:

> Yes, it’s better to bump a protocol version to keep the compatibility.
>
> Regards,
> Penghui
>
> On Thu, Feb 29, 2024 at 16:13 Enrico Olivelli <eolive...@gmail.com> wrote:
>
> > Il Gio 29 Feb 2024, 08:46 PengHui Li <peng...@apache.org> ha scritto:
> >
> > > +1 for the motivation
> > >
> > > We should not create partitioned topics when calling
> > > `pulsarClient.getPartitionsForTopic`
> > >
> > > The tricky part is the broker doesn't know if the partition metadata
> > > getting request is from create produce/consumer or just from
> > > pulsarClient.getPartitionsForTopic(topicName).
> > >
> > > We can follow the same way that Admin API does to have a field
> > > `createIfAutoCreationEnabled` in the `CommandPartitionedTopicMetadata`
> > >
> > > The producer/consumer will set this flag to true to create partitioned
> > > topics if topic auto-creation is enabled.
> > > We will use false as the default value.
> > >
> >
> >
> > We should bump the protocol version of we change the default behaviour.
> > This is a wire protocol thing, not about the Java client.
> >
> > We shuold assume that it is true if not set.
> >  if we detect that he client is using a newer version of the protocol
> then
> > the default is false.
> >
> > We cannot break old clients
> >
> >
> > Enrico
> >
> >
> > > Regards,
> > > Penghui
> > >
> > > On Thu, Feb 29, 2024 at 11:05 AM Yubiao Feng
> > > <yubiao.f...@streamnative.io.invalid> wrote:
> > >
> > > > Hi all
> > > >
> > > > ### Background
> > > > - When calling `pulsarClient.getPartitionsForTopic(topicName)`,
> Pulsar
> > > will
> > > > automatically create the partitioned topic metadata if it does not
> > exist,
> > > > either using `HttpLookupService` or `BinaryProtoLookupService`.
> > > > - The partitioned topic auto-creation is dependent on
> > > > `pulsarClient.getPartitionsForTopic`
> > > >   - It triggers partitioned metadata creation by
> > > > `pulsarClient.getPartitionsForTopic`
> > > >   - And triggers the topic partition creation by producers'
> > registration
> > > > and consumers' registration.
> > > >
> > > > ### Issue
> > > > Since the method `pulsarClient.getPartitionsForTopic` is a public
> API,
> > > and
> > > > it is named `getxxx,` it should edit nothing.
> > > >
> > > > ### Solution
> > > > - Solution-1: remove the public API
> > `pulsarClient.getPartitionsForTopic`
> > > > and only use it internally.
> > > > - Solution-2: provide an internal API to trigger partitioned metadata
> > > > creation and make the public API `pulsarClient.getPartitionsForTopic`
> > > edit
> > > > nothing.
> > > > - Solution-3: redesign the flow of partitioned topic auto-creation.
> > > >
> > > > I would like to recommend solution 2, and hope to hear more voices.
> > > >
> > > > Thanks
> > > > Yubiao Feng
> > > >
> > >
> >
>

Reply via email to