Currently in Pulsar there is a distinction between local and global topics, where global topics are replicated and local topics are not.
A topic is global if it‘s created on a global namespace and local if it’s created on a namespace that it's tied to a particular Pulsar cluster.
For example:
my-tenant/global/my-namespace
my-tenant/us-west/my-namespace
Similarly, the topic names will follow as:
persistent://my-tenant/global/my-namespace/my-topic
persistent://my-tenant/us-west/my-namespace/my-topic
This distinction leads to a few confusing side effects:
In reality, the difference between the two types is only coming from legacy reason and there is no practical difference between a global with just one single cluster in the replication list and a local namespace.
Given that local namespace is just a special case in the more general global namespace, this proposal is to make all the namespaces to be global.
Once all the namespaces are global, there will be no need to specify global
in the namespace or topic names. Thus the names could be simplified like in:
my-tenant/my-namespace
persistent://my-tenant/my-namespace/my-topic
Existing namespaces and topics will continue work as before. All REST APIs and tools will accept both naming schemes, though the documentation will just refer to the new naming, to avoid confusion.
NamespaceName
and DestinationName
are the only classes that are used to do the naming validation and will be updated to support both old and new scheme./
in the URL. New handlers will be added and the old ones will be marked as “hidden” for the auto-generated documentation in Swagger.