> Agree. But we need to take care of the compatibility. How do we handle > this compatibility?
How about set `isDurable = false` when create `NonPersistentSubscription`? In `NonPersistentSubscription`, we can change the constructor from ``` public NonPersistentSubscription(NonPersistentTopic topic, String subscriptionName, boolean isDurable, Map<String, String> properties) { this.topic = topic; this.topicName = topic.getName(); this.subName = subscriptionName; this.fullName = MoreObjects.toStringHelper(this).add("topic", topicName).add("name", subName).toString(); IS_FENCED_UPDATER.set(this, FALSE); this.lastActive = System.currentTimeMillis(); this.isDurable = isDurable; this.subscriptionProperties = properties != null ? Collections.unmodifiableMap(properties) : Collections.emptyMap(); } ``` to: ``` public NonPersistentSubscription(NonPersistentTopic topic, String subscriptionName, Map<String, String> properties) { this.topic = topic; this.topicName = topic.getName(); this.subName = subscriptionName; this.fullName = MoreObjects.toStringHelper(this).add("topic", topicName).add("name", subName).toString(); IS_FENCED_UPDATER.set(this, FALSE); this.lastActive = System.currentTimeMillis(); this.isDurable = false; this.subscriptionProperties = properties != null ? Collections.unmodifiableMap(properties) : Collections.emptyMap(); } ``` In the broker side, for non-persistent topic, there is no durable subscriptions. In the client side, users don’t need to change their code. Thanks, Tao Jiuming > 2023年2月9日 15:01,Zike Yang <z...@apache.org> 写道: > >> It makes sense, for non-persistent topic, it should not create a durable >> subscription. > > Agree. But we need to take care of the compatibility. How do we handle > this compatibility? > > BR, > Zike Yang > > On Thu, Feb 9, 2023 at 2:43 PM Jiuming Tao > <jm...@streamnative.io.invalid> wrote: >> >>> We can add validation to inform the user that a durable subscription on a >>> non-persistent topic is invalid. >> >> It makes sense, for non-persistent topic, it should not create a durable >> subscription. >> >> Thanks, >> Tao Jiuming >> >>> 2023年2月8日 23:06,Baodi Shi <ba...@apache.org> 写道: >>> >>>> >>>> But it seems that currently all Durable subscriptions on >>>> >>> non-persistent topics are NonDurable, and I wonder if that confuses >>>> users. >>>> >>> >>> We can add validation to inform the user that a durable subscription on a >>> non-persistent topic is invalid. >>> >>> >>> Thanks, >>> Baodi Shi >>> >>> >>> 在 2023年2月8日 10:48:32 上,Zike Yang <z...@apache.org> 写道: >>> >>>> I agree to remove all subscriptions when there're no consumers on the >>>> non-persistent topic. The configuration >>>> `subscriptionExpirationTimeMinutes ` should not take effect on the >>>> non-persistent topic. >>>> >>>> But it seems that currently all Durable subscriptions on >>>> non-persistent topics are NonDurable, and I wonder if that confuses >>>> users. >>>> >>>>> But for `NonPersistentDispatcherMultipleConsumers`, >>>> `NonPersistentStickyKeyDispatcherMultipleConsumers`, I’m not sure that >>>> if it matters when we auto delete the subscriptions which has no >>>> consumers connected. >>>> >>>> It doesn't matter IMO. >>>> >>>> Thanks, >>>> Zike Yang >>>> >>>> >>>> >>>> Zike Yang >>>> >>>> On Tue, Feb 7, 2023 at 9:22 PM Jiuming Tao >>>> <jm...@streamnative.io.invalid> wrote: >>>> >>>> >>>>> I think we are talking about the durable subscription of the >>>> non-persistent >>>> >>>>> topic, right? >>>> >>>> >>>> Yes, non-durable subscriptions created by Reader, if the reader >>>> disconnected, the subscription will be deleted automatically. >>>> >>>> >>>> >>>> For `NonPersistentDispatcher`, it has the following implementations: >>>> >>>> 1. NonPersistentDispatcherMultipleConsumers >>>> >>>> 2. NonPersistentDispatcherSingleActiveConsumer >>>> >>>> 3. NonPersistentStickyKeyDispatcherMultipleConsumers >>>> >>>> >>>> For `NonPersistentDispatcherSingleActiveConsumer`, auto delete the >>>> subscription when there isn’t consumer connected affect nothing. >>>> >>>> >>>> But for `NonPersistentDispatcherMultipleConsumers`, >>>> `NonPersistentStickyKeyDispatcherMultipleConsumers`, I’m not sure that if >>>> it matters when we auto delete the subscriptions which has no consumers >>>> connected. >>>> >>>> >>>> If it doesn’t matter, I agree with you. >>>> >>>> >>>> Auto delete the durable subscriptions when there aren’t consumers >>>> connected to the non-persistent topic. >>>> >>>> >>>> >>>> Thanks, >>>> >>>> Tao Jiuming >>>> >>>> >>>> >>>>> 2023年2月7日 19:58,PengHui Li <peng...@apache.org <mailto: >>>> peng...@apache.org>> 写道: >>>> >>>>> >>>> >>>>> I think we are talking about the durable subscription of the >>>> non-persistent >>>> >>>>> topic, right? For the Reader API (non-durable subscription), the >>>> >>>>> subscription will be >>>> >>>>> removed after the reader disconnects. If not, it should be BUG. >>>> >>>>> >>>> >>>>> IMO, we should remove the subscription automatically if all the consumers >>>> >>>>> are disconnected for the non-persistent topic. The consumers can only get >>>> >>>>> the new incoming messages after they connect to the non-persistent topic. >>>> >>>>> It looks like even if we leave the subscription there; it will >>>> >>>>> help nothing. >>>> >>>>> The behavior should be the same as creating a new subscription with the >>>> >>>>> same subscription name. >>>> >>>>> >>>> >>>>> For subscription management, users are not able to disable the >>>> subscription >>>> >>>>> auto-creation of the non-persistent topic? We don't have any metadata >>>> >>>>> persist >>>> >>>>> in the metadata store. After the broker restarts, we will lose >>>> everything. >>>> >>>>> >>>> >>>>> So I think we don't need to introduce a new configuration. Instead, we >>>> >>>>> should >>>> >>>>> figure out if there is a strong reason to leave the durable subscription >>>> >>>>> after >>>> >>>>> all the consumers are disconnected. If there is no strong reason, I tend >>>> to >>>> >>>>> fix >>>> >>>>> incorrect behavior directly. >>>> >>>>> >>>> >>>>> Best, >>>> >>>>> Penghui >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> On Tue, Feb 7, 2023 at 4:14 PM Jiuming Tao <jm...@streamnative.io.invalid >>>> <mailto:jm...@streamnative.io.invalid>> >>>> >>>>> wrote: >>>> >>>>> >>>> >>>>>> Hi, >>>> >>>>>> >>>> >>>>>> I’ve opened a new PIP to discuss: >>>> >>>>>> >>>> >>>>>> Currently, in Pulsar, we have a configuration named >>>> >>>>>> `subscriptionExpirationTimeMinutes` to manage the subscription >>>> expiration >>>> >>>>>> of `PersistentTopic` and `NonPersistentTopic`. >>>> >>>>>> >>>> >>>>>> When we set a value which is greater than 0 to >>>> >>>>>> `subscriptionExpirationTimeMinutes`, it will affect both >>>> `PersistentTopic` >>>> >>>>>> and `NonPersistentTopic`. Their inactive subscriptions will get expired >>>> and >>>> >>>>>> will clean automatically. >>>> >>>>>> >>>> >>>>>> For `NonPersistentTopic`, its subscriptions can be clean because we >>>> don't >>>> >>>>>> guarantee its data integrity. But for `PersistentTopic`, if we clean its >>>> >>>>>> subscriptions automatically may lead to data loss. >>>> >>>>>> >>>> >>>>>> However, their subscription expiration is managed by the same >>>> >>>>>> configuration(`subscriptionExpirationTimeMinutes`), we can't manage >>>> their >>>> >>>>>> subscription expiration independently. >>>> >>>>>> >>>> >>>>>> So I want to introduce a new configuration named >>>> >>>>>> `nonPersistentSubscriptionExpirationTimeMinutes` to manage >>>> >>>>>> `NonPersistentTopic`'s subscription expiration. >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> Please feel free to leave your comments, the PIP link: >>>> >>>>>> https://github.com/apache/pulsar/issues/19448 < >>>> https://github.com/apache/pulsar/issues/19448> < >>>> >>>>>> https://github.com/apache/pulsar/issues/19448 < >>>> https://github.com/apache/pulsar/issues/19448>> >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> Thanks, >>>> >>>>>> Tao Jiuming >>>> >>>> >>>> >>