Source:
<code>public synchronized void start(HelixManager helixZkManager) { _helixZkManager = helixZkManager; _instanceId = _helixZkManager.getInstanceName(); _helixAdmin = _helixZkManager.getClusterManagmentTool(); _propertyStore = _helixZkManager.getHelixPropertyStore(); _helixDataAccessor = _helixZkManager.getHelixDataAccessor(); _keyBuilder = _helixDataAccessor.keyBuilder(); addInstanceGroupTagIfNeeded(); _segmentDeletionManager = new SegmentDeletionManager(_dataDir, _helixAdmin, _helixClusterName, _propertyStore); ZKMetadataProvider.setClusterTenantIsolationEnabled(_propertyStore, _isSingleTenantCluster); HelixConfigScope helixConfigScope = new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.CLUSTER).forCluster(_helixClusterName).build(); Map<String, String> configs = _helixAdmin.getConfig(helixConfigScope, Arrays.asList(Helix.ENABLE_CASE_INSENSITIVE_KEY, Helix.DEPRECATED_ENABLE_CASE_INSENSITIVE_KEY)); boolean caseInsensitive = Boolean.parseBoolean(configs.get(Helix.ENABLE_CASE_INSENSITIVE_KEY)) || Boolean .parseBoolean(configs.get(Helix.DEPRECATED_ENABLE_CASE_INSENSITIVE_KEY)); _tableCache = new TableCache(_propertyStore, caseInsensitive); _clusterInstanceConfigChangeListener = new ClusterInstanceConfigChangeListener(_helixZkManager); _clusterLiveInstanceChangeListener = new ClusterLiveInstanceChangeListener(_helixDataAccessor, _keyBuilder); try { addConfigListeners(_clusterInstanceConfigChangeListener); addLiveInstanceListeners(_clusterLiveInstanceChangeListener); } catch (Exception e) { LOGGER.warn( <START> "Unable to add config listener in controller. This will result in incorrect response from controller's broker API"); <END> } }</code><technical_language>1. separate try catch error msg for listeners 2. consider fallback direct fetch api</technical_language>

Target:
public synchronized void start(HelixManager helixZkManager) { _helixZkManager = helixZkManager; _instanceId = _helixZkManager.getInstanceName(); _helixAdmin = _helixZkManager.getClusterManagmentTool(); _propertyStore = _helixZkManager.getHelixPropertyStore(); _helixDataAccessor = _helixZkManager.getHelixDataAccessor(); _keyBuilder = _helixDataAccessor.keyBuilder(); addInstanceGroupTagIfNeeded(); _segmentDeletionManager = new SegmentDeletionManager(_dataDir, _helixAdmin, _helixClusterName, _propertyStore); ZKMetadataProvider.setClusterTenantIsolationEnabled(_propertyStore, _isSingleTenantCluster); HelixConfigScope helixConfigScope = new HelixConfigScopeBuilder(HelixConfigScope.ConfigScopeProperty.CLUSTER).forCluster(_helixClusterName).build(); Map<String, String> configs = _helixAdmin.getConfig(helixConfigScope, Arrays.asList(Helix.ENABLE_CASE_INSENSITIVE_KEY, Helix.DEPRECATED_ENABLE_CASE_INSENSITIVE_KEY)); boolean caseInsensitive = Boolean.parseBoolean(configs.get(Helix.ENABLE_CASE_INSENSITIVE_KEY)) || Boolean .parseBoolean(configs.get(Helix.DEPRECATED_ENABLE_CASE_INSENSITIVE_KEY)); _tableCache = new TableCache(_propertyStore, caseInsensitive); _clusterInstanceConfigChangeListener = new ClusterInstanceConfigChangeListener(_helixZkManager); _clusterLiveInstanceChangeListener = new ClusterLiveInstanceChangeListener(_helixDataAccessor, _keyBuilder); try { addConfigListeners(_clusterInstanceConfigChangeListener); addLiveInstanceListeners(_clusterLiveInstanceChangeListener); } catch (Exception e) { LOGGER.error( "Unable to register instance config listeners. This will not result in any failure but can cause slow response in APIs due to multiple zokeeper calls"); } }