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