public Set<String> getAllBrokerTenantNames() { Set<String> tenantSet = new HashSet<>(); List<String> instancesInCluster = _helixAdmin.getInstancesInCluster(_helixClusterName); for (String instanceName : instancesInCluster) { InstanceConfig config = _helixDataAccessor.getProperty(_keyBuilder.instanceConfig(instanceName)); for (String tag : config.getTags()) { if (tag.equals(CommonConstants.Helix.UNTAGGED_BROKER_INSTANCE) || tag .equals(CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE) || tag .equals(CommonConstants.Minion.UNTAGGED_INSTANCE)) { continue; } if (TagNameUtils.getTenantRoleFromTag(tag) == TenantRole.BROKER) { tenantSet.add(TagNameUtils.getTenantNameFromTag(tag)); } } } return tenantSet; }
public Set<String> getAllServerTenantNames() { Set<String> tenantSet = new HashSet<>(); List<String> instancesInCluster = _helixAdmin.getInstancesInCluster(_helixClusterName); for (String instanceName : instancesInCluster) { InstanceConfig config = _helixDataAccessor.getProperty(_keyBuilder.instanceConfig(instanceName)); for (String tag : config.getTags()) { if (tag.equals(CommonConstants.Helix.UNTAGGED_BROKER_INSTANCE) || tag .equals(CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE) || tag .equals(CommonConstants.Minion.UNTAGGED_INSTANCE)) { continue; } if (TagNameUtils.getTenantRoleFromTag(tag) == TenantRole.SERVER) { tenantSet.add(TagNameUtils.getTenantNameFromTag(tag)); } } } return tenantSet; }
PropertyKey propertyKey = propertyKeyBuilder.instanceConfig(instanceName); instancePaths.add(propertyKey.getPath());
@Override public List<String> getInstancesInClusterWithTag(String clusterName, String tag) { String memberInstancesPath = PropertyPathBuilder.instance(clusterName); List<String> instances = _zkClient.getChildren(memberInstancesPath); List<String> result = new ArrayList<String>(); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); for (String instanceName : instances) { InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); if (config == null) { throw new IllegalStateException(String .format("Instance %s does not have a config, cluster might be in bad state", instanceName)); } if (config.containsTag(tag)) { result.add(instanceName); } } return result; }
@Override public List<String> getInstancesInClusterWithTag(String clusterName, String tag) { String memberInstancesPath = PropertyPathBuilder.instance(clusterName); List<String> instances = _zkClient.getChildren(memberInstancesPath); List<String> result = new ArrayList<String>(); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); for (String instanceName : instances) { InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); if (config == null) { throw new IllegalStateException(String .format("Instance %s does not have a config, cluster might be in bad state", instanceName)); } if (config.containsTag(tag)) { result.add(instanceName); } } return result; }
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 } } }
@Override public void removeInstanceTag(String clusterName, String instanceName, String tag) { logger.info("Remove instance tag {} for instance {} in cluster {}.", tag, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException( "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.removeTag(tag); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
@Override public void removeInstanceTag(String clusterName, String instanceName, String tag) { logger.info("Remove instance tag {} for instance {} in cluster {}.", tag, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException( "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.removeTag(tag); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
@Override public void addInstanceTag(String clusterName, String instanceName, String tag) { logger .info("Add instance tag {} for instance {} in cluster {}.", tag, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException( "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.addTag(tag); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
@Override public void addInstanceTag(String clusterName, String instanceName, String tag) { logger .info("Add instance tag {} for instance {} in cluster {}.", tag, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException("cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.addTag(tag); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
@Override public void setInstanceZoneId(String clusterName, String instanceName, String zoneId) { logger.info("Set instance zoneId {} for instance {} in cluster {}.", zoneId, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException( "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.setZoneId(zoneId); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
@Override public void setInstanceZoneId(String clusterName, String instanceName, String zoneId) { logger.info("Set instance zoneId {} for instance {} in cluster {}.", zoneId, instanceName, clusterName); if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { throw new HelixException("cluster " + clusterName + " is not setup yet"); } if (!ZKUtil.isInstanceSetup(_zkClient, clusterName, instanceName, InstanceType.PARTICIPANT)) { throw new HelixException( "cluster " + clusterName + " instance " + instanceName + " is not setup yet"); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); config.setZoneId(zoneId); accessor.setProperty(keyBuilder.instanceConfig(instanceName), config); }
StringRepresentation getInstanceRepresentation() throws JsonGenerationException, JsonMappingException, IOException { String clusterName = ResourceUtil.getAttributeFromRequest(getRequest(), ResourceUtil.RequestKey.CLUSTER_NAME); String instanceName = ResourceUtil.getAttributeFromRequest(getRequest(), ResourceUtil.RequestKey.INSTANCE_NAME); Builder keyBuilder = new PropertyKey.Builder(clusterName); ZkClient zkclient = ResourceUtil.getAttributeFromCtx(getContext(), ResourceUtil.ContextKey.RAW_ZKCLIENT); String instanceCfgStr = ResourceUtil.readZkAsBytes(zkclient, keyBuilder.instanceConfig(instanceName)); StringRepresentation representation = new StringRepresentation(instanceCfgStr, MediaType.APPLICATION_JSON); return representation; }
@Override public InstanceConfig getInstanceConfig(String clusterName, String instanceName) { logger.info("Get instance config for instance {} from cluster {}.", instanceName, clusterName); String instanceConfigPath = PropertyPathBuilder.instanceConfig(clusterName, instanceName); if (!_zkClient.exists(instanceConfigPath)) { throw new HelixException( "instance" + instanceName + " does not exist in cluster " + clusterName); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); return accessor.getProperty(keyBuilder.instanceConfig(instanceName)); }
public void verifyEnabled(HelixZkClient zkClient, String clusterName, String instance, boolean wantEnabled) { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient)); Builder keyBuilder = accessor.keyBuilder(); InstanceConfig config = accessor.getProperty(keyBuilder.instanceConfig(instance)); AssertJUnit.assertEquals(wantEnabled, config.getInstanceEnabled()); }
@GET @Path("{instanceName}/configs") public Response getInstanceConfig(@PathParam("clusterId") String clusterId, @PathParam("instanceName") String instanceName) throws IOException { HelixDataAccessor accessor = getDataAccssor(clusterId); InstanceConfig instanceConfig = accessor.getProperty(accessor.keyBuilder().instanceConfig(instanceName)); if (instanceConfig != null) { return JSONRepresentation(instanceConfig.getRecord()); } return notFound(); }
private void updateInstanceConfig() { // test change content HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); String instanceName = "localhost_12918"; HelixProperty value = accessor.getProperty(keyBuilder.instanceConfig(instanceName)); value._record.setLongField("TimeStamp", System.currentTimeMillis()); accessor.setProperty(keyBuilder.instanceConfig(instanceName), value); }
@Override public InstanceConfig getInstanceConfig(String clusterName, String instanceName) { logger.info("Get instance config for instance {} from cluster {}.", instanceName, clusterName); String instanceConfigPath = PropertyPathBuilder.instanceConfig(clusterName, instanceName); if (!_zkClient.exists(instanceConfigPath)) { throw new HelixException( "instance" + instanceName + " does not exist in cluster " + clusterName); } HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkClient)); Builder keyBuilder = accessor.keyBuilder(); return accessor.getProperty(keyBuilder.instanceConfig(instanceName)); }
DEFAULT_RETRY_POLICY.attempt(() -> _helixDataAccessor.removeProperty(_keyBuilder.instanceConfig(instanceName))); } catch (Exception e) { return PinotResourceManagerResponse.failure(
private List<String> getTagsForInstance(String instanceName) { InstanceConfig config = _helixDataAccessor.getProperty(_keyBuilder.instanceConfig(instanceName)); return config.getTags(); }