Hi dev, I would like to discuss this change with the community.
Motivation: By this BlueGreenClusterMigration PIP-188( https://github.com/apache/pulsar/pull/17962), `redirectedClusterURI` member var has been introduced in the pulsar client to hold the new cluster's endpoint. Accordingly, pulsar client also added a state of a map of LookupService to lookup the migrated clusters. If redirectedClusterURI is not null, then clients look up the mapped, redirectedClusterURI->LookupService, when clients connect to migrated brokers. Proposal: In fact, this logic can be simplified by directly updating the existing lookup service's service url. Then, we don't need to track the new lookup services in a separate map and remove `redirectedClusterURI`, either. Hers is the sample code for this proposal: https://github.com/heesung-sn/pulsar/pull/59/ Pros: - The removal of redirectedClusterURI and the lookup service map can simplify the client code - It works better with other logics: Bundle Transfer and AutoClusterFailover, as these features currently only use the original lookup service. Cons: - To consume backlog from the blue (old) cluster, new clients need to be created with the old service url(pointing to the old cluster) because the existing clients' lookup service will be already updated, pointing to the new cluster. However, I think this(requiring a new client with old service url, old cluster) makes sense because all of the existing pub/sub will anyway be reconnected to the new clusters as per the broker's close commands. So, to consume the backlog from the old cluster, new client applications need to start with the old service url anyway. Example: https://github.com/heesung-sn/pulsar/pull/59/files#diff-3c745333eaeae9e8a87e92495fbf97b7c952c034b8c18ca92156f07cd5b1f5afR308-R312 Thanks, Heesung