nodece commented on code in PR #23770:
URL: https://github.com/apache/pulsar/pull/23770#discussion_r2909764921


##########
pip/pip-398.md:
##########
@@ -0,0 +1,253 @@
+# PIP-398: Subscription replication on the broker, namespace and topic levels
+
+# Background knowledge
+
+https://github.com/apache/pulsar/pull/4299 introduces the subscription 
replication feature on the consumer level:
+
+```java
+Consumer<byte[]> consumer = 
pulsarClient.newConsumer().topic("topic").replicateSubscriptionState(false/*true*/)
+        .subscriptionName("sub").subscribe();
+```
+
+While this provides flexibility, it introduces overhead in managing 
replication for a large number of consumers. Users
+need to manually enable the `replicateSubscriptionState` flag for each 
consumer, which can become cumbersome in
+large-scale deployments.
+
+# Motivation
+
+The key motivation behind this PIP is to simplify subscription replication 
configuration, especially in failover
+scenarios. When a main cluster goes down and a backup cluster is activated, 
ensuring that subscription states are
+consistently replicated across clusters is critical for failover scenarios. By 
extending the replication configuration
+to the broker, namespace and topic levels, the system reduces the need for 
explicit consumer-level configuration.
+
+# Goals
+
+## In Scope
+
+The PIP aims to provide management of subscription replication at the broker, 
namespace and topic levels using the
+Pulsar Admin CLI and API.
+
+# High Level Design
+
+Introduces the `replicateSubscriptionState` configuration to enabling 
subscription replication on the broker, namespace
+and topic levels, when enabled, all consumers under the broker/namespace/topic 
will automatically replicate their
+subscription states to remote clusters.
+
+The priority for the subscription replication configuration is as follows:
+
+- consumer level > topic level > namespace level > broker level.
+- If `replicateSubscriptionState` is set at the consumer level, configurations 
at the topic, namespace, and broker levels are
+  ignored.
+- If set at the topic level, the namespace-level configuration is ignored.
+- If set at the namespace level, the broker-level configuration is ignored.

Review Comment:
   @lhotari You are right.
   
   The replicated flag at the subscription level is persisted in BookKeeper 
cursor metadata, and only `true` indicates a replicated subscription.
   
   To keep the semantics consistent across subscription, topic, and namespace
   levels, the policy only treats `Boolean.TRUE` as enabling the feature. 
`false` or `null` both mean "not enabling it".
   
   Otherwise, the topic could end up in inconsistent states where a 
subscription is replicated while the topic policy explicitly disables this.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to