lhotari commented on code in PR #22846:
URL: https://github.com/apache/pulsar/pull/22846#discussion_r1627073006
##########
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:
valid point. I guess this is hard to solve since the interface is
synchronous in Bookkeeper. I guess there are ways to workaround the problem and
still make it asynchronous. In that case, the initialization would have to
somehow happen before the bk-client is made ready.
--
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]