public static String getTagFromTenantAndServerType(String tenantName, ServerType type) { if (type == ServerType.OFFLINE) { return getOfflineTagForTenant(tenantName); } return getRealtimeTagForTenant(tenantName); }
public static String getRealtimeTagForTenant(String tenantName) { if (tenantName == null) { return TagNameUtils.getRealtimeTagForTenant(DEFAULT_TENANT_NAME); } if (tenantName.endsWith(ServerType.REALTIME.toString())) { return tenantName; } else { return TagNameUtils.buildRealtimeTagFromTenantName(tenantName); } }
/** * Returns the server instances in the cluster for the given tenant. * * TODO: refactor code to use this method if applicable to reuse instance configs in order to reduce ZK accesses */ public static Set<String> getServerInstancesForTenant(List<InstanceConfig> instanceConfigs, String tenant) { Set<String> serverInstances = new HashSet<>(); serverInstances .addAll(HelixHelper.getInstancesWithTag(instanceConfigs, TagNameUtils.getOfflineTagForTenant(tenant))); serverInstances .addAll(HelixHelper.getInstancesWithTag(instanceConfigs, TagNameUtils.getRealtimeTagForTenant(tenant))); return serverInstances; }
public boolean isTenantExisted(String tenantName) { if (!HelixHelper.getInstancesWithTag(_helixZkManager, TagNameUtils.getBrokerTagForTenant(tenantName)).isEmpty()) { return true; } if (!HelixHelper.getInstancesWithTag(_helixZkManager, TagNameUtils.getOfflineTagForTenant(tenantName)).isEmpty()) { return true; } if (!HelixHelper.getInstancesWithTag(_helixZkManager, TagNameUtils.getRealtimeTagForTenant(tenantName)).isEmpty()) { return true; } return false; }
public PinotResourceManagerResponse deleteRealtimeServerTenantFor(String tenantName) { String realtimeTenantTag = TagNameUtils.getRealtimeTagForTenant(tenantName); List<String> instancesInClusterWithTag = HelixHelper.getInstancesWithTag(_helixZkManager, realtimeTenantTag); for (String instanceName : instancesInClusterWithTag) { _helixAdmin.removeInstanceTag(_helixClusterName, instanceName, realtimeTenantTag); if (getTagsForInstance(instanceName).isEmpty()) { _helixAdmin.addInstanceTag(_helixClusterName, instanceName, CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE); } } return PinotResourceManagerResponse.SUCCESS; }
public RealtimeTagConfig(TableConfig tableConfig) { super(tableConfig); TagOverrideConfig tagOverrideConfig = tableConfig.getTenantConfig().getTagOverrideConfig(); if (tagOverrideConfig != null && tagOverrideConfig.getRealtimeConsuming() != null) { _consumingRealtimeServerTag = tagOverrideConfig.getRealtimeConsuming(); } else { _consumingRealtimeServerTag = TagNameUtils.getRealtimeTagForTenant(_serverTenant); } if (tagOverrideConfig != null && tagOverrideConfig.getRealtimeCompleted() != null) { _completedRealtimeServerTag = tagOverrideConfig.getRealtimeCompleted(); } else { _completedRealtimeServerTag = TagNameUtils.getRealtimeTagForTenant(_serverTenant); } if (!_consumingRealtimeServerTag.equals(_completedRealtimeServerTag)) { _relocateCompletedSegments = true; } }
public PinotResourceManagerResponse updateServerTenant(Tenant serverTenant) { String realtimeServerTag = TagNameUtils.getRealtimeTagForTenant(serverTenant.getTenantName()); List<String> taggedRealtimeServers = HelixHelper.getInstancesWithTag(_helixZkManager, realtimeServerTag); String offlineServerTag = TagNameUtils.getOfflineTagForTenant(serverTenant.getTenantName()); List<String> taggedOfflineServers = HelixHelper.getInstancesWithTag(_helixZkManager, offlineServerTag); Set<String> allServingServers = new HashSet<>(); allServingServers.addAll(taggedOfflineServers); allServingServers.addAll(taggedRealtimeServers); boolean isCurrentTenantColocated = (allServingServers.size() < taggedOfflineServers.size() + taggedRealtimeServers.size()); if (isCurrentTenantColocated != serverTenant.isCoLocated()) { String message = "Not support different colocated type request for update request: " + serverTenant; LOGGER.error(message); return PinotResourceManagerResponse.failure(message); } if (serverTenant.getNumberOfInstances() < allServingServers.size() || serverTenant.getOfflineInstances() < taggedOfflineServers.size() || serverTenant.getRealtimeInstances() < taggedRealtimeServers.size()) { return scaleDownServer(serverTenant, taggedRealtimeServers, taggedOfflineServers, allServingServers); } return scaleUpServerTenant(serverTenant, realtimeServerTag, taggedRealtimeServers, offlineServerTag, taggedOfflineServers, allServingServers); }
private void assignIndependentServerTenant(Tenant serverTenant, int numberOfInstances, List<String> unTaggedInstanceList) { String offlineServerTag = TagNameUtils.getOfflineTagForTenant(serverTenant.getTenantName()); for (int i = 0; i < serverTenant.getOfflineInstances(); i++) { retagInstance(unTaggedInstanceList.get(i), CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE, offlineServerTag); } String realtimeServerTag = TagNameUtils.getRealtimeTagForTenant(serverTenant.getTenantName()); for (int i = 0; i < serverTenant.getRealtimeInstances(); i++) { retagInstance(unTaggedInstanceList.get(i + serverTenant.getOfflineInstances()), CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE, realtimeServerTag); } }
private void assignColocatedServerTenant(Tenant serverTenant, int numberOfInstances, List<String> unTaggedInstanceList) { int cnt = 0; String offlineServerTag = TagNameUtils.getOfflineTagForTenant(serverTenant.getTenantName()); for (int i = 0; i < serverTenant.getOfflineInstances(); i++) { retagInstance(unTaggedInstanceList.get(cnt++), CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE, offlineServerTag); } String realtimeServerTag = TagNameUtils.getRealtimeTagForTenant(serverTenant.getTenantName()); for (int i = 0; i < serverTenant.getRealtimeInstances(); i++) { retagInstance(unTaggedInstanceList.get(cnt++), CommonConstants.Helix.UNTAGGED_SERVER_INSTANCE, realtimeServerTag); if (cnt == numberOfInstances) { cnt = 0; } } }
public boolean isServerTenantDeletable(String tenantName) { Set<String> taggedInstances = new HashSet<>( HelixHelper.getInstancesWithTag(_helixZkManager, TagNameUtils.getOfflineTagForTenant(tenantName))); taggedInstances .addAll(HelixHelper.getInstancesWithTag(_helixZkManager, TagNameUtils.getRealtimeTagForTenant(tenantName))); for (String resourceName : getAllResources()) { if (!TableNameBuilder.isTableResource(resourceName)) { continue; } IdealState tableIdealState = _helixAdmin.getResourceIdealState(_helixClusterName, resourceName); for (String partition : tableIdealState.getPartitionSet()) { for (String instance : tableIdealState.getInstanceSet(partition)) { if (taggedInstances.contains(instance)) { return false; } } } } return true; }
.size(), NUM_OFFLINE_SERVERS_PER_TAG); Assert.assertEquals(_helixAdmin .getInstancesInClusterWithTag(_helixClusterName, TagNameUtils.getRealtimeTagForTenant(serverTenant)).size(), NUM_REALTIME_SERVERS_PER_TAG); Assert.assertEquals( .size(), NUM_OFFLINE_SERVERS_PER_TAG + i); Assert.assertEquals(_helixAdmin .getInstancesInClusterWithTag(_helixClusterName, TagNameUtils.getRealtimeTagForTenant(serverTenant)).size(), NUM_REALTIME_SERVERS_PER_TAG + i); Assert.assertEquals( .size(), 0); Assert.assertEquals(_helixAdmin .getInstancesInClusterWithTag(_helixClusterName, TagNameUtils.getRealtimeTagForTenant(serverTenant)).size(), 0); Assert.assertEquals(
TagNameUtils.getBrokerTagForTenant(TagNameUtils.DEFAULT_TENANT_NAME)).size(), 20); Assert.assertEquals(_helixAdmin.getInstancesInClusterWithTag(_helixClusterName, TagNameUtils.getRealtimeTagForTenant(TagNameUtils.DEFAULT_TENANT_NAME)).size(), 20); Assert.assertEquals(_helixAdmin.getInstancesInClusterWithTag(_helixClusterName, TagNameUtils.getOfflineTagForTenant(TagNameUtils.DEFAULT_TENANT_NAME)).size(), 20);
int nConsumingInstances = 3; String serverTenant = "aServerTenant"; String realtimeTagForTenant = TagNameUtils.getRealtimeTagForTenant(serverTenant); PartitionAssignment newPartitionAssignment = new PartitionAssignment(realtimeTableName); List<String> completedInstances = getInstanceList(nCompletedInstances);