merlimat commented on code in PR #22846:
URL: https://github.com/apache/pulsar/pull/22846#discussion_r1628179439


##########
pulsar-broker-common/src/main/java/org/apache/pulsar/bookie/rackawareness/BookieRackAffinityMapping.java:
##########
@@ -116,25 +115,32 @@ public synchronized void setConf(Configuration conf) {
         super.setConf(conf);
         MetadataStore store;
         try {
-            store = createMetadataStore(conf);
-            bookieMappingCache = 
store.getMetadataCache(BookiesRackConfiguration.class);
-            store.registerListener(this::handleUpdates);
-            racksWithHost = bookieMappingCache.get(BOOKIE_INFO_ROOT_PATH).get()
-                    .orElseGet(BookiesRackConfiguration::new);
-            for (Map<String, BookieInfo> bookieMapping : 
racksWithHost.values()) {
-                for (String address : bookieMapping.keySet()) {
-                    bookieAddressListLastTime.add(BookieId.parse(address));
-                }
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("BookieRackAffinityMapping init, 
bookieAddressListLastTime {}",
-                            bookieAddressListLastTime);
-                }
-            }
-            updateRacksWithHost(racksWithHost);
-            watchAvailableBookies();
-        } catch (InterruptedException | ExecutionException | MetadataException 
e) {
+            store = getMetadataStore(conf);
+        } catch (MetadataException e) {
             throw new RuntimeException(METADATA_STORE_INSTANCE + " failed to 
init BookieId list");
         }
+
+        bookieMappingCache = 
store.getMetadataCache(BookiesRackConfiguration.class);
+        store.registerListener(this::handleUpdates);
+        bookieMappingCache.get(BOOKIE_INFO_ROOT_PATH)

Review Comment:
   I think it does not solve the problem completely because the calling thread 
is still blocked. 
   
   The BK client creation is moved to a background thread and it's ok, thought 
the thread waiting for the BK client to be created is still blocked.
   
   eg: 
    1. IO thread is initiating the creation of topic
    2. We trigger creation of BK client
    3. background-thread is creating BK client
    4. IO thread is still blocked waiting for completion.
   
   I'm working on a change to return future from BK client factory that would 
avoid the problem.



-- 
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: commits-unsubscr...@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to