private void manageRetentionForTable(String tableNameWithType) { // Build retention strategy from table config TableConfig tableConfig = _pinotHelixResourceManager.getTableConfig(tableNameWithType); if (tableConfig == null) { LOGGER.error("Failed to get table config for table: {}", tableNameWithType); return; } SegmentsValidationAndRetentionConfig validationConfig = tableConfig.getValidationConfig(); String segmentPushType = validationConfig.getSegmentPushType(); if (!"APPEND".equalsIgnoreCase(segmentPushType)) { LOGGER.info("Segment push type is not APPEND for table: {}, skip", tableNameWithType); return; } String retentionTimeUnit = validationConfig.getRetentionTimeUnit(); String retentionTimeValue = validationConfig.getRetentionTimeValue(); RetentionStrategy retentionStrategy; try { retentionStrategy = new TimeRetentionStrategy(TimeUnit.valueOf(retentionTimeUnit.toUpperCase()), Long.parseLong(retentionTimeValue)); } catch (Exception e) { LOGGER.warn("Invalid retention time: {} {} for table: {}, skip", retentionTimeUnit, retentionTimeValue); return; } // Scan all segment ZK metadata and purge segments if necessary if (TableNameBuilder.OFFLINE.tableHasTypeSuffix(tableNameWithType)) { manageRetentionForOfflineTable(tableNameWithType, retentionStrategy); } else { manageRetentionForRealtimeTable(tableNameWithType, retentionStrategy); } }
String timeUnitString = retentionConfig.getRetentionTimeUnit(); TimeUnit timeUnit; try {
private void validateLoadedConfig(TableConfig config) { Assert.assertEquals(config.getTableName(), "mytable_OFFLINE"); Assert.assertEquals(config.getQuotaConfig().getStorage(), "125 GiB"); Assert.assertEquals(config.getValidationConfig().getRetentionTimeValue(), "5"); Assert.assertEquals(config.getValidationConfig().getRetentionTimeUnit(), "DAYS"); Assert.assertEquals(config.getTenantConfig().getBroker(), "foo"); Assert.assertEquals(config.getTenantConfig().getServer(), "bar"); Assert.assertEquals(config.getIndexingConfig().getSortedColumn(), Lists.newArrayList("foo")); } }
Assert.assertEquals(tableConfig.getValidationConfig().getRetentionTimeUnit(), "DAYS"); Assert.assertEquals(modifiedConfig.getValidationConfig().getRetentionTimeUnit(), "HOURS"); Assert.assertEquals(modifiedConfig.getValidationConfig().getRetentionTimeValue(), "10"); tableConfig = getTableConfig(tableName, "REALTIME"); Assert.assertEquals(tableConfig.getValidationConfig().getRetentionTimeValue(), "5"); Assert.assertEquals(tableConfig.getValidationConfig().getRetentionTimeUnit(), "DAYS"); Assert.assertNull(tableConfig.getQuotaConfig());