@VisibleForTesting protected List<String> getConsumingTaggedInstances(TableConfig tableConfig) { RealtimeTagConfig realtimeTagConfig = new RealtimeTagConfig(tableConfig); String consumingServerTag = realtimeTagConfig.getConsumingServerTag(); List<String> consumingTaggedInstances = HelixHelper.getInstancesWithTag(_helixManager, consumingServerTag); if (consumingTaggedInstances.isEmpty()) { throw new IllegalStateException("No instances found with tag " + consumingServerTag); } return consumingTaggedInstances; } }
public List<String> getServerInstancesForTable(String tableName, TableType tableType) { TableConfig tableConfig = getTableConfig(tableName, tableType); Set<String> serverInstances = new HashSet<>(); if (TableType.OFFLINE.equals(tableType)) { OfflineTagConfig tagConfig = new OfflineTagConfig(tableConfig); serverInstances.addAll(HelixHelper.getInstancesWithTag(_helixZkManager, tagConfig.getOfflineServerTag())); } else if (TableType.REALTIME.equals(tableType)) { RealtimeTagConfig tagConfig = new RealtimeTagConfig(tableConfig); serverInstances.addAll(HelixHelper.getInstancesWithTag(_helixZkManager, tagConfig.getConsumingServerTag())); serverInstances.addAll(HelixHelper.getInstancesWithTag(_helixZkManager, tagConfig.getCompletedServerTag())); } return Lists.newArrayList(serverInstances); }
public static IdealState buildInitialHighLevelRealtimeIdealStateFor(String realtimeTableName, TableConfig realtimeTableConfig, HelixManager helixManager, ZkHelixPropertyStore<ZNRecord> zkHelixPropertyStore, boolean enableBatchMessageMode) { RealtimeTagConfig realtimeTagConfig = new RealtimeTagConfig(realtimeTableConfig); final List<String> realtimeInstances = HelixHelper.getInstancesWithTag(helixManager, realtimeTagConfig.getConsumingServerTag()); IdealState idealState = buildEmptyRealtimeIdealStateFor(realtimeTableName, 1, enableBatchMessageMode); if (realtimeInstances.size() % Integer.parseInt(realtimeTableConfig.getValidationConfig().getReplication()) != 0) { throw new RuntimeException( "Number of instance in current tenant should be an integer multiples of the number of replications"); } setupInstanceConfigForHighLevelConsumer(realtimeTableName, realtimeInstances.size(), Integer.parseInt(realtimeTableConfig.getValidationConfig().getReplication()), realtimeTableConfig.getIndexingConfig().getStreamConfigs(), zkHelixPropertyStore, realtimeInstances); return idealState; }
@Test(dataProvider = "realtimeTagConfigTestDataProvider") public void testRealtimeTagConfig(TableConfig tableConfig, String expectedServerTenant, String expectedRealtimeConsumingTag, String expectedRealtimeCompletedTag) { RealtimeTagConfig tagConfig = new RealtimeTagConfig(tableConfig); Assert.assertEquals(tagConfig.getServerTenantName(), expectedServerTenant); Assert.assertEquals(tagConfig.getConsumingServerTag(), expectedRealtimeConsumingTag); Assert.assertEquals(tagConfig.getCompletedServerTag(), expectedRealtimeCompletedTag); }
when(realtimeTagConfig.getConsumingServerTag()).thenReturn(serverTenantConsuming); when(realtimeTagConfig.getCompletedServerTag()).thenReturn(serverTenantCompleted);