List<InstanceConfig> instanceConfigs = helixDataAccessor.getChildValues(propertyKeyBuilder.instanceConfigs()); long icFetchEnd = System.currentTimeMillis(); icFetchTime = icFetchEnd - icFetchStart;
if (!affectedTables.isEmpty()) { long icFetchStart = System.currentTimeMillis(); List<InstanceConfig> instanceConfigs = helixDataAccessor.getChildValues(propertyKeyBuilder.instanceConfigs());
@Transition(from = "OFFLINE", to = "ONLINE") public void onBecomeOnlineFromOffline(Message message, NotificationContext context) { try { LOGGER.info("BrokerResourceOnlineOfflineStateModel.onBecomeOnlineFromOffline() : " + message); Builder keyBuilder = _helixManager.getHelixDataAccessor().keyBuilder(); String tableName = message.getPartitionName(); HelixDataAccessor helixDataAccessor = _helixManager.getHelixDataAccessor(); List<InstanceConfig> instanceConfigList = helixDataAccessor.getChildValues(keyBuilder.instanceConfigs()); TableConfig tableConfig = ZKMetadataProvider.getTableConfig(_propertyStore, tableName); _helixExternalViewBasedRouting.markDataResourceOnline(tableConfig, HelixHelper.getExternalViewForResource(_helixAdmin, _helixManager.getClusterName(), tableName), instanceConfigList); _tableQueryQuotaManager.initTableQueryQuota(tableConfig, HelixHelper .getExternalViewForResource(_helixAdmin, _helixManager.getClusterName(), BROKER_RESOURCE_INSTANCE)); } catch (Exception e) { LOGGER.error("Caught exception during OFFLINE -> ONLINE transition", e); Utils.rethrowException(e); throw new AssertionError("Should not reach this"); } }
@Override public void addConfigChangeListener(ScopedConfigChangeListener listener, ConfigScopeProperty scope) throws Exception { Builder keyBuilder = new Builder(_clusterName); PropertyKey propertyKey = null; switch (scope) { case CLUSTER: propertyKey = keyBuilder.clusterConfigs(); break; case PARTICIPANT: propertyKey = keyBuilder.instanceConfigs(); break; case RESOURCE: propertyKey = keyBuilder.resourceConfigs(); break; default: break; } if (propertyKey != null) { addListener(listener, propertyKey, ChangeType.CONFIG, new EventType[] { EventType.NodeChildrenChanged }); } else { LOG.error("Can't add listener to config scope: " + scope); } }
@Override public void addConfigChangeListener(ScopedConfigChangeListener listener, ConfigScopeProperty scope) throws Exception { Builder keyBuilder = new Builder(_clusterName); PropertyKey propertyKey = null; switch (scope) { case CLUSTER: propertyKey = keyBuilder.clusterConfigs(); break; case PARTICIPANT: propertyKey = keyBuilder.instanceConfigs(); break; case RESOURCE: propertyKey = keyBuilder.resourceConfigs(); break; default: break; } if (propertyKey != null) { addListener(listener, propertyKey, ChangeType.CONFIG, new EventType[] { EventType.NodeChildrenChanged }); } else { LOG.error("Can't add listener to config scope: " + scope); } }
@Transition(to = "STANDBY", from = "LEADER") public void onBecomeStandbyFromLeader(Message message, NotificationContext context) { LOG.info("Become STANDBY from LEADER"); HelixManager manager = context.getManager(); if (manager == null) { throw new IllegalArgumentException("Require HelixManager in notification conext"); } Builder keyBuilder = new Builder(manager.getClusterName()); for (ChangeType notificationType : _notificationTypes) { if (notificationType == ChangeType.LIVE_INSTANCE) { manager.removeListener(keyBuilder.liveInstances(), _particHolder); } else if (notificationType == ChangeType.CONFIG) { manager.removeListener(keyBuilder.instanceConfigs(), _particHolder); } else if (notificationType == ChangeType.EXTERNAL_VIEW) { manager.removeListener(keyBuilder.externalViews(), _particHolder); } else { LOG.error("Unsupport notificationType:" + notificationType.toString()); } } }
private void updateConfigs() throws InterruptedException { final Random r = new Random(System.currentTimeMillis()); // test change content HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); final List<String> instances = accessor.getChildNames(keyBuilder.instanceConfigs()); for (String instance : instances) { InstanceConfig value = accessor.getProperty(keyBuilder.instanceConfig(instance)); value._record.setLongField("TimeStamp", System.currentTimeMillis()); accessor.setProperty(keyBuilder.instanceConfig(instance), value); Thread.sleep(50); } final List<String> resources = accessor.getChildNames(keyBuilder.idealStates()); for (String resource : resources) { IdealState idealState = accessor.getProperty(keyBuilder.idealStates(resource)); idealState.setNumPartitions(r.nextInt(100)); accessor.setProperty(keyBuilder.idealStates(idealState.getId()), idealState); Thread.sleep(20); // wait zk callback } } }
@Transition(to = "STANDBY", from = "LEADER") public void onBecomeStandbyFromLeader(Message message, NotificationContext context) { LOG.info("Become STANDBY from LEADER"); HelixManager manager = context.getManager(); if (manager == null) { throw new IllegalArgumentException("Require HelixManager in notification conext"); } Builder keyBuilder = new Builder(manager.getClusterName()); for (ChangeType notificationType : _notificationTypes) { if (notificationType == ChangeType.LIVE_INSTANCE) { manager.removeListener(keyBuilder.liveInstances(), _particHolder); } else if (notificationType == ChangeType.CONFIG) { manager.removeListener(keyBuilder.instanceConfigs(), _particHolder); } else if (notificationType == ChangeType.EXTERNAL_VIEW) { manager.removeListener(keyBuilder.externalViews(), _particHolder); } else { LOG.error("Unsupport notificationType:" + notificationType.toString()); } } }
public void removeListenersFromController(GenericHelixController controller) { PropertyKey.Builder keyBuilder = new PropertyKey.Builder(_manager.getClusterName()); /** * reset generic-controller */ _manager.removeListener(keyBuilder.idealStates(), controller); _manager.removeListener(keyBuilder.liveInstances(), controller); _manager.removeListener(keyBuilder.clusterConfig(), controller); _manager.removeListener(keyBuilder.resourceConfigs(), controller); _manager.removeListener(keyBuilder.instanceConfigs(), controller); _manager.removeListener(keyBuilder.controller(), controller); /** * reset controller message listener and unregister all message handlers */ _manager.removeListener(keyBuilder.controllerMessages(), _messagingService.getExecutor()); }
public void removeListenersFromController(GenericHelixController controller) { PropertyKey.Builder keyBuilder = new PropertyKey.Builder(_manager.getClusterName()); /** * reset generic-controller */ _manager.removeListener(keyBuilder.instanceConfigs(), controller); _manager.removeListener(keyBuilder.resourceConfigs(), controller); _manager.removeListener(keyBuilder.liveInstances(), controller); _manager.removeListener(keyBuilder.idealStates(), controller); _manager.removeListener(keyBuilder.controller(), controller); /** * reset controller message listener and unregister all message handlers */ _manager.removeListener(keyBuilder.controllerMessages(), _messagingService.getExecutor()); }
protected void refresh(List<ExternalView> externalViewList, NotificationContext changeContext) { HelixDataAccessor accessor = changeContext.getManager().getHelixDataAccessor(); PropertyKey.Builder keyBuilder = accessor.keyBuilder(); List<InstanceConfig> configList = accessor.getChildValues(keyBuilder.instanceConfigs()); List<LiveInstance> liveInstances = accessor.getChildValues(keyBuilder.liveInstances()); refresh(externalViewList, configList, liveInstances); }
@Deprecated @Override public void addInstanceConfigChangeListener(org.apache.helix.InstanceConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
@Override public void addInstanceConfigChangeListener(InstanceConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
@Deprecated @Override public void addInstanceConfigChangeListener(org.apache.helix.InstanceConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
@Override public void addConfigChangeListener(ConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
private void removeListeners(Listener listener) throws Exception { _manager.removeListener(new PropertyKey.Builder(_manager.getClusterName()).instanceConfigs(), listener); _manager .removeListener(new PropertyKey.Builder(_manager.getClusterName()).idealStates(), listener); }
@Override public void addConfigChangeListener(ConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
protected void refresh(List<ExternalView> externalViewList, NotificationContext changeContext) { HelixDataAccessor accessor = changeContext.getManager().getHelixDataAccessor(); PropertyKey.Builder keyBuilder = accessor.keyBuilder(); List<InstanceConfig> configList = accessor.getChildValues(keyBuilder.instanceConfigs()); List<LiveInstance> liveInstances = accessor.getChildValues(keyBuilder.liveInstances()); refresh(externalViewList, configList, liveInstances); }
@Override public void addInstanceConfigChangeListener(InstanceConfigChangeListener listener) throws Exception { addListener(listener, new Builder(_clusterName).instanceConfigs(), ChangeType.INSTANCE_CONFIG, new EventType[] { EventType.NodeChildrenChanged }); }
/** * Returns the config for all the instances in the cluster. */ public static List<InstanceConfig> getInstanceConfigs(HelixManager helixManager) { HelixDataAccessor helixDataAccessor = helixManager.getHelixDataAccessor(); return helixDataAccessor.getChildValues(helixDataAccessor.keyBuilder().instanceConfigs()); }