thetumbled opened a new pull request, #25178:
URL: https://github.com/apache/pulsar/pull/25178

   
   ### Motivation
   
   In `ControlledClusterFailover`, the `currentControlledConfiguration` field 
is not initialized when the class is constructed. This causes the first 
execution of the scheduled task to always trigger an unnecessary reconnection, 
even when the fetched configuration from the URL provider is identical to the 
client's current configuration.
   
   The condition check:
   ```java
   if (controlledConfiguration != null
           && !Strings.isNullOrEmpty(controlledConfiguration.getServiceUrl())
           && !controlledConfiguration.equals(currentControlledConfiguration))
   ```
   
   When `currentControlledConfiguration` is `null`, 
`!controlledConfiguration.equals(null)` always returns `true`, causing:
   1. `pulsarClient.updateServiceUrl(serviceUrl)` to be called
   2. `pulsarClient.reloadLookUp()` to be called - which **disconnects all 
existing connections and reconnects**
   
   This unnecessary reconnection on client startup can cause connection 
disruptions and performance issues.
   
   ### Modifications
   
   Initialize `currentControlledConfiguration` in the `initialize()` method 
with all four configuration fields from the client's current configuration:
   
   - `serviceUrl` - from `defaultServiceUrl` passed to the builder
   - `tlsTrustCertsFilePath` - from `ClientConfigurationData`
   - `authPluginClassName` - from `ClientConfigurationData`
   - `authParamsString` - from `ClientConfigurationData.authParams`
   
   This ensures that on the first scheduled check, if the fetched configuration 
matches the client's current configuration, no unnecessary reconnection will 
occur.
   
   ### Verifying this change
   
   - [ ] Make sure that the change passes the CI checks.
   
   *(Please pick either of the following options)*
   
   This change is a trivial rework / code cleanup without any test coverage.
   
   
   ### Does this pull request potentially affect one of the following parts:
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   *If the box was checked, please highlight the changes*
   
   - [ ] Dependencies (add or upgrade a dependency)
   - [ ] The public API
   - [ ] The schema
   - [ ] The default values of configurations
   - [ ] The threading model
   - [ ] The binary protocol
   - [ ] The REST endpoints
   - [ ] The admin CLI options
   - [ ] The metrics
   - [ ] Anything that affects deployment
   
   ### Documentation
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ] `doc` <!-- Your PR contains doc changes. -->
   - [ ] `doc-required` <!-- Your PR changes impact docs and you will update 
later -->
   - [ ] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   - [ ] `doc-complete` <!-- Docs have been already added -->
   
   ### Matching PR in forked repository
   
   PR in forked repository: <!-- ENTER URL HERE -->
   =


-- 
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