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

   ### Motivation
   
   After https://github.com/apache/pulsar/pull/14384, the broker and the client 
expects that the `InternalConfigurationData` contains `metadataStoreUrl` and 
`configurationMetadataStoreUrl` fields.
   However the broker is no more compatible with old clients. 
   
   
   https://github.com/apache/pulsar/pull/14384 is landed to branch-2.11 and 
[2.10.3](https://github.com/apache/pulsar/pull/17291)
   
   Example scenario: 
   - broker on 2.10.2
   - function worker on 2.10.2
   
   1. upgrade fn worker to 2.11.0 or 2.10.3
   2. the fn worker starts and download the internal config from the broker
   3. broker serves a json with old fields (`zookeeperServers` and 
`configurationStoreServers`)
   4. fn worker reads the json and convert it to a `InternalConfigurationData` 
instance. It expects to see the fields filled `metadataStoreUrl` and 
`configurationMetadataStoreUrl` but they aren't
   5. NPE on fn worker 
   ```
   2022-09-15T17:42:16,072+0000 [main] INFO  
org.apache.pulsar.functions.worker.PulsarWorkerService - Initializing Pulsar 
Functions namespace...
   2022-09-15T17:42:16,192+0000 [main] ERROR 
org.apache.pulsar.functions.worker.FunctionWorkerStarter - Encountered error in 
function worker.
   java.lang.NullPointerException: null
       at 
org.apache.pulsar.metadata.impl.MetadataStoreFactoryImpl.removeIdentifierFromMetadataURL(MetadataStoreFactoryImpl.java:73)
 
       at 
org.apache.pulsar.functions.worker.WorkerUtils.initializeDlogNamespace(WorkerUtils.java:188)
 
       at 
org.apache.pulsar.functions.worker.PulsarWorkerService.initializeStandaloneWorkerService(PulsarWorkerService.java:281)
 
       at 
org.apache.pulsar.functions.worker.PulsarWorkerService.initAsStandalone(PulsarWorkerService.java:208)
       at org.apache.pulsar.functions.worker.Worker.start(Worker.java:54)
       at 
org.apache.pulsar.functions.worker.FunctionWorkerStarter.main(FunctionWorkerStarter.java:76)
   ```
   
   
   ### Modifications
   
   * Restore old fields in `InternalConfigurationData` and add fallback the old 
values in the new fields getters
   * Added unit test 
   
   - [x] `doc-not-needed` 


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