BewareMyPower commented on code in PR #23297:
URL: https://github.com/apache/pulsar/pull/23297#discussion_r1758050385


##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java:
##########
@@ -521,38 +471,33 @@ public void start() throws PulsarServerException {
                                     MONITOR_INTERVAL_IN_MILLIS, 
TimeUnit.MILLISECONDS);
 
                     this.splitScheduler.start();
-                    this.initWaiter.complete(null);
+                    this.initWaiter.complete(true);
                     this.started = true;
                     log.info("Started load manager.");
-                } catch (Exception ex) {
-                    failStarting(ex);
+                } catch (Throwable e) {
+                    failStarting(e);
                 }
             });
-        } catch (Exception ex) {
+        } catch (Throwable ex) {
             failStarting(ex);
         }
     }
 
-    private void failStarting(Exception ex) {
-        log.error("Failed to start the extensible load balance and close 
broker registry {}.",
-                this.brokerRegistry, ex);
+    private void failStarting(Throwable throwable) {
         if (this.brokerRegistry != null) {
             try {
-                brokerRegistry.unregister();
-            } catch (MetadataStoreException e) {
-                // ignore
-            }
-        }
-        if (this.serviceUnitStateChannel != null) {
-            try {
-                serviceUnitStateChannel.close();
-            } catch (IOException e) {
-                // ignore
+                brokerRegistry.close();
+            } catch (PulsarServerException e) {
+                // If close failed, this broker might still exist in the 
metadata store. Then it could be found by other
+                // brokers as an available broker. Hence, print a warning log 
for it.
+                log.warn("Failed to close the broker registry: {}", 
e.getMessage());

Review Comment:
   > the lock should be released automatically after the connection get closed 
   
   ~~Unfortunately not. The lock is released by deleting the metadata store 
node with the version stored internally. Closing the connection won't release 
the lock.~~
   
   The node might be deleted if the metadata store client's session timed out.



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