This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new e1aee5fd07 Remove rest APIs that was deprecated more than 4 years ago 
(#12639)
e1aee5fd07 is described below

commit e1aee5fd071257f969c694f36f9a413e29964903
Author: Xiaotian (Jackie) Jiang <17555551+jackie-ji...@users.noreply.github.com>
AuthorDate: Wed Mar 13 09:35:11 2024 -0700

    Remove rest APIs that was deprecated more than 4 years ago (#12639)
---
 .../api/resources/PinotSegmentRestletResource.java | 200 ---------------------
 .../api/resources/PinotTableIndexingConfigs.java   |  98 ----------
 .../api/resources/PinotTableMetadataConfigs.java   |  95 ----------
 .../api/resources/PinotTableRestletResource.java   |  40 -----
 .../api/resources/PinotTableSegmentConfigs.java    | 100 -----------
 .../api/resources/PinotTaskRestletResource.java    | 126 -------------
 .../api/resources/PinotUpsertRestletResource.java  |   1 +
 .../api/resources/TableAndSchemaConfig.java        |   3 +
 .../helix/core/PinotHelixResourceManager.java      |  44 -----
 .../api/PinotTableRestletResourceTest.java         |  48 -----
 .../utils/builder/ControllerRequestURLBuilder.java |   2 +-
 11 files changed, 5 insertions(+), 752 deletions(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
index c3a7134b67..03897f2456 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
@@ -54,7 +54,6 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
@@ -277,56 +276,6 @@ public class PinotSegmentRestletResource {
     }
   }
 
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_SERVER_MAP)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Get a map from server to segments hosted by the 
server (deprecated, use 'GET "
-      + "/segments/{tableName}/servers' instead)",
-      notes = "Get a map from server to segments hosted by the server 
(deprecated, use 'GET "
-          + "/segments/{tableName}/servers' instead)")
-  public List<Map<String, String>> getServerToSegmentsMapDeprecated1(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "MUST be null") @QueryParam("state") String stateStr,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr)
-      throws JsonProcessingException {
-    if (stateStr != null) {
-      throw new WebApplicationException("Cannot toggle segment state", 
Status.FORBIDDEN);
-    }
-
-    List<String> tableNamesWithType = ResourceUtils
-        .getExistingTableNamesWithType(_pinotHelixResourceManager, tableName, 
Constants.validateTableType(tableTypeStr),
-            LOGGER);
-    List<Map<String, String>> resultList = new 
ArrayList<>(tableNamesWithType.size());
-    for (String tableNameWithType : tableNamesWithType) {
-      // NOTE: DO NOT change the format for backward-compatibility
-      Map<String, String> resultForTable = new LinkedHashMap<>();
-      resultForTable.put("tableName", tableNameWithType);
-      resultForTable.put("segments",
-          
JsonUtils.objectToString(_pinotHelixResourceManager.getServerToSegmentsMap(tableNameWithType)));
-      resultList.add(resultForTable);
-    }
-    return resultList;
-  }
-
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/metadata")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_SERVER_MAP)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Get a map from server to segments hosted by the 
server (deprecated, use 'GET "
-      + "/segments/{tableName}/servers' instead)",
-      notes = "Get a map from server to segments hosted by the server 
(deprecated, use 'GET "
-          + "/segments/{tableName}/servers' instead)")
-  public List<Map<String, String>> getServerToSegmentsMapDeprecated2(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "MUST be null") @QueryParam("state") String stateStr,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr)
-      throws JsonProcessingException {
-    return getServerToSegmentsMapDeprecated1(tableName, stateStr, 
tableTypeStr);
-  }
-
   @GET
   @Path("segments/{tableName}/crc")
   @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_SEGMENT_MAP)
@@ -343,20 +292,6 @@ public class PinotSegmentRestletResource {
     return _pinotHelixResourceManager.getSegmentsCrcForTable(offlineTableName);
   }
 
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/crc")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_SEGMENT_MAP)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(
-      value = "Get a map from segment to CRC of the segment (deprecated, use 
'GET /segments/{tableName}/crc' instead)",
-      notes = "Get a map from segment to CRC of the segment (deprecated, use 
'GET /segments/{tableName}/crc' instead)")
-  public Map<String, String> getSegmentToCrcMapDeprecated(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @Context HttpHeaders headers) {
-    return getSegmentToCrcMap(tableName, headers);
-  }
-
   @GET
   @Path("segments/{tableName}/{segmentName}/metadata")
   @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_METADATA)
@@ -420,68 +355,6 @@ public class PinotSegmentRestletResource {
     return segmentZKMetadata != null ? segmentZKMetadata.toMap() : null;
   }
 
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/{segmentName}/metadata")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_METADATA)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(
-      value = "Get the metadata for a segment (deprecated, use 'GET 
/segments/{tableName}/{segmentName}/metadata' "
-          + "instead)",
-      notes = "Get the metadata for a segment (deprecated, use 'GET 
/segments/{tableName}/{segmentName}/metadata' "
-          + "instead)")
-  public List<List<Map<String, Object>>> getSegmentMetadataDeprecated1(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "Name of the segment", required = true) 
@PathParam("segmentName") @Encoded String segmentName,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr, @Context HttpHeaders headers) {
-    segmentName = URIUtils.decode(segmentName);
-    TableType tableType = Constants.validateTableType(tableTypeStr);
-    List<String> tableNamesWithType =
-        
ResourceUtils.getExistingTableNamesWithType(_pinotHelixResourceManager, 
tableName, tableType, LOGGER);
-    List<List<Map<String, Object>>> resultList = new 
ArrayList<>(tableNamesWithType.size());
-    for (String tableNameWithType : tableNamesWithType) {
-      Map<String, Object> segmentMetadata =
-          getSegmentMetadata(tableNameWithType, segmentName, 
Collections.emptyList(), headers);
-      if (segmentMetadata != null) {
-        // NOTE: DO NOT change the format for backward-compatibility
-        Map<String, Object> resultForTable = new LinkedHashMap<>();
-        resultForTable.put("tableName", tableNameWithType);
-        resultForTable.put("state", segmentMetadata);
-        resultList.add(Collections.singletonList(resultForTable));
-      }
-    }
-    if (resultList.isEmpty()) {
-      String errorMessage = "Failed to find segment: " + segmentName + " in 
table: " + tableName;
-      if (tableType != null) {
-        errorMessage += " of type: " + tableType;
-      }
-      throw new ControllerApplicationException(LOGGER, errorMessage, 
Status.NOT_FOUND);
-    }
-    return resultList;
-  }
-
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/{segmentName}")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.GET_METADATA)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(
-      value = "Get the metadata for a segment (deprecated, use 'GET 
/segments/{tableName}/{segmentName}/metadata' "
-          + "instead)",
-      notes = "Get the metadata for a segment (deprecated, use 'GET 
/segments/{tableName}/{segmentName}/metadata' "
-          + "instead)")
-  public List<List<Map<String, Object>>> getSegmentMetadataDeprecated2(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "Name of the segment", required = true) 
@PathParam("segmentName") @Encoded String segmentName,
-      @ApiParam(value = "MUST be null") @QueryParam("state") String stateStr,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr, @Context HttpHeaders headers) {
-    if (stateStr != null) {
-      throw new WebApplicationException("Cannot toggle segment state", 
Status.FORBIDDEN);
-    }
-
-    return getSegmentMetadataDeprecated1(tableName, segmentName, tableTypeStr, 
headers);
-  }
-
   @POST
   @Path("segments/{tableName}/{segmentName}/reload")
   @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.RELOAD_SEGMENT)
@@ -615,44 +488,6 @@ public class PinotSegmentRestletResource {
     }
   }
 
-  @Deprecated
-  @POST
-  @Path("tables/{tableName}/segments/{segmentName}/reload")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.RELOAD_SEGMENT)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Reload a segment (deprecated, use 'POST 
/segments/{tableName}/{segmentName}/reload' instead)",
-      notes = "Reload a segment (deprecated, use 'POST 
/segments/{tableName}/{segmentName}/reload' instead)")
-  public SuccessResponse reloadSegmentDeprecated1(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "Name of the segment", required = true) 
@PathParam("segmentName") @Encoded String segmentName,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr) {
-    segmentName = URIUtils.decode(segmentName);
-    List<String> tableNamesWithType = ResourceUtils
-        .getExistingTableNamesWithType(_pinotHelixResourceManager, tableName, 
Constants.validateTableType(tableTypeStr),
-            LOGGER);
-    int numMessagesSent = 0;
-    for (String tableNameWithType : tableNamesWithType) {
-      numMessagesSent += 
_pinotHelixResourceManager.reloadSegment(tableNameWithType, segmentName, 
false).getLeft();
-    }
-    return new SuccessResponse("Sent " + numMessagesSent + " reload messages");
-  }
-
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/{segmentName}/reload")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.RELOAD_SEGMENT)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Reload a segment (deprecated, use 'POST 
/segments/{tableName}/{segmentName}/reload' instead)",
-      notes = "Reload a segment (deprecated, use 'POST 
/segments/{tableName}/{segmentName}/reload' instead)")
-  public SuccessResponse reloadSegmentDeprecated2(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "Name of the segment", required = true) 
@PathParam("segmentName") @Encoded String segmentName,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr) {
-    return reloadSegmentDeprecated1(tableName, segmentName, tableTypeStr);
-  }
-
   @GET
   @Path("segments/segmentReloadStatus/{jobId}")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_SEGMENT_RELOAD_STATUS)
@@ -806,41 +641,6 @@ public class PinotSegmentRestletResource {
     return new SuccessResponse(JsonUtils.objectToString(perTableMsgData));
   }
 
-  @Deprecated
-  @POST
-  @Path("tables/{tableName}/segments/reload")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.RELOAD_SEGMENT)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Reload all segments (deprecated, use 'POST 
/segments/{tableName}/reload' instead)",
-      notes = "Reload all segments (deprecated, use 'POST 
/segments/{tableName}/reload' instead)")
-  public SuccessResponse reloadAllSegmentsDeprecated1(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr) {
-    List<String> tableNamesWithType = ResourceUtils
-        .getExistingTableNamesWithType(_pinotHelixResourceManager, tableName, 
Constants.validateTableType(tableTypeStr),
-            LOGGER);
-    int numMessagesSent = 0;
-    for (String tableNameWithType : tableNamesWithType) {
-      numMessagesSent += 
_pinotHelixResourceManager.reloadAllSegments(tableNameWithType, 
false).getLeft();
-    }
-    return new SuccessResponse("Sent " + numMessagesSent + " reload messages");
-  }
-
-  @Deprecated
-  @GET
-  @Path("tables/{tableName}/segments/reload")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.RELOAD_SEGMENT)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Reload all segments (deprecated, use 'POST 
/segments/{tableName}/reload' instead)",
-      notes = "Reload all segments (deprecated, use 'POST 
/segments/{tableName}/reload' instead)")
-  public SuccessResponse reloadAllSegmentsDeprecated2(
-      @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
-      @ApiParam(value = "OFFLINE|REALTIME") @QueryParam("type") String 
tableTypeStr) {
-    return reloadAllSegmentsDeprecated1(tableName, tableTypeStr);
-  }
-
   @DELETE
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/segments/{tableName}/{segmentName}")
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableIndexingConfigs.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableIndexingConfigs.java
deleted file mode 100644
index f00d680aa2..0000000000
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableIndexingConfigs.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.pinot.controller.api.resources;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiKeyAuthDefinition;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.SecurityDefinition;
-import io.swagger.annotations.SwaggerDefinition;
-import javax.inject.Inject;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.apache.pinot.controller.api.access.AccessType;
-import org.apache.pinot.controller.api.access.Authenticate;
-import 
org.apache.pinot.controller.api.exception.ControllerApplicationException;
-import org.apache.pinot.controller.helix.core.PinotHelixResourceManager;
-import org.apache.pinot.core.auth.Actions;
-import org.apache.pinot.core.auth.Authorize;
-import org.apache.pinot.core.auth.TargetType;
-import org.apache.pinot.segment.local.utils.TableConfigUtils;
-import org.apache.pinot.spi.config.table.TableConfig;
-import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.utils.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static 
org.apache.pinot.spi.utils.CommonConstants.SWAGGER_AUTHORIZATION_KEY;
-
-
-@Api(tags = Constants.TABLE_TAG, authorizations = {@Authorization(value = 
SWAGGER_AUTHORIZATION_KEY)})
-@SwaggerDefinition(securityDefinition = 
@SecurityDefinition(apiKeyAuthDefinitions = @ApiKeyAuthDefinition(name =
-    HttpHeaders.AUTHORIZATION, in = 
ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = SWAGGER_AUTHORIZATION_KEY)))
-@Path("/")
-public class PinotTableIndexingConfigs {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(PinotTableIndexingConfigs.class);
-
-  @Inject
-  PinotHelixResourceManager _pinotHelixResourceManager;
-
-  @Deprecated
-  @PUT
-  @Path("/tables/{tableName}/indexingConfigs")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.UPDATE_TABLE_CONFIG)
-  @Authenticate(AccessType.UPDATE)
-  @ApiOperation(value = "Update table indexing configuration")
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiResponses(value = {
-      @ApiResponse(code = 200, message = "Success"),
-      @ApiResponse(code = 404, message = "Table not found"),
-      @ApiResponse(code = 500, message = "Server error updating configuration")
-  })
-  public SuccessResponse updateIndexingConfig(
-      @ApiParam(value = "Table name (without type)", required = true) 
@PathParam("tableName") String tableName,
-      String tableConfigString) {
-    TableConfig tableConfig;
-    try {
-      tableConfig = JsonUtils.stringToObject(tableConfigString, 
TableConfig.class);
-      Schema schema = 
_pinotHelixResourceManager.getSchemaForTableConfig(tableConfig);
-      TableConfigUtils.validate(tableConfig, schema);
-    } catch (Exception e) {
-      String msg = String.format("Invalid table config: %s", tableName);
-      throw new ControllerApplicationException(LOGGER, msg, 
Response.Status.BAD_REQUEST, e);
-    }
-    try {
-      
_pinotHelixResourceManager.updateIndexingConfigFor(tableConfig.getTableName(), 
tableConfig.getTableType(),
-          tableConfig.getIndexingConfig());
-      return new SuccessResponse("Updated indexing config for table " + 
tableName);
-    } catch (Exception e) {
-      String errStr = "Failed to update indexing config for table: " + 
tableName;
-      throw new ControllerApplicationException(LOGGER, errStr, 
Response.Status.INTERNAL_SERVER_ERROR, e);
-    }
-  }
-}
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableMetadataConfigs.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableMetadataConfigs.java
deleted file mode 100644
index d61ac73ce4..0000000000
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableMetadataConfigs.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.pinot.controller.api.resources;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiKeyAuthDefinition;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.SecurityDefinition;
-import io.swagger.annotations.SwaggerDefinition;
-import javax.inject.Inject;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.apache.pinot.controller.api.access.AccessType;
-import org.apache.pinot.controller.api.access.Authenticate;
-import 
org.apache.pinot.controller.api.exception.ControllerApplicationException;
-import org.apache.pinot.controller.helix.core.PinotHelixResourceManager;
-import org.apache.pinot.core.auth.Actions;
-import org.apache.pinot.core.auth.Authorize;
-import org.apache.pinot.core.auth.TargetType;
-import org.apache.pinot.segment.local.utils.TableConfigUtils;
-import org.apache.pinot.spi.config.table.TableConfig;
-import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.utils.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static 
org.apache.pinot.spi.utils.CommonConstants.SWAGGER_AUTHORIZATION_KEY;
-
-
-@Api(tags = Constants.TABLE_TAG, authorizations = {@Authorization(value = 
SWAGGER_AUTHORIZATION_KEY)})
-@SwaggerDefinition(securityDefinition = 
@SecurityDefinition(apiKeyAuthDefinitions = @ApiKeyAuthDefinition(name =
-    HttpHeaders.AUTHORIZATION, in = 
ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = SWAGGER_AUTHORIZATION_KEY)))
-@Path("/")
-public class PinotTableMetadataConfigs {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(PinotTableMetadataConfigs.class);
-
-  @Inject
-  PinotHelixResourceManager _pinotHelixResourceManager;
-
-  @Deprecated
-  @PUT
-  @Path("/tables/{tableName}/metadataConfigs")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.UPDATE_TABLE_CONFIG)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Update table metadata", notes = "Updates table 
configuration")
-  @ApiResponses(value = {
-      @ApiResponse(code = 200, message = "Success"),
-      @ApiResponse(code = 500, message = "Internal server error"),
-      @ApiResponse(code = 404, message = "Table not found")
-  })
-  public SuccessResponse updateTableMetadata(@PathParam("tableName") String 
tableName, String tableConfigString) {
-    TableConfig tableConfig;
-    try {
-      tableConfig = JsonUtils.stringToObject(tableConfigString, 
TableConfig.class);
-      Schema schema = 
_pinotHelixResourceManager.getSchemaForTableConfig(tableConfig);
-      TableConfigUtils.validate(tableConfig, schema);
-    } catch (Exception e) {
-      String msg = String.format("Invalid table config: %s", tableName);
-      throw new ControllerApplicationException(LOGGER, msg, 
Response.Status.BAD_REQUEST, e);
-    }
-    try {
-      
_pinotHelixResourceManager.updateMetadataConfigFor(tableConfig.getTableName(), 
tableConfig.getTableType(),
-          tableConfig.getCustomConfig());
-      return new SuccessResponse("Successfully updated " + tableName + " 
configuration");
-    } catch (Exception e) {
-      String errStr = "Error while updating table configuration, table: " + 
tableName;
-      throw new ControllerApplicationException(LOGGER, errStr, 
Response.Status.INTERNAL_SERVER_ERROR, e);
-    }
-  }
-}
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableRestletResource.java
index 2329568d3b..534205fcbf 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableRestletResource.java
@@ -568,46 +568,6 @@ public class PinotTableRestletResource {
     return validationResponse;
   }
 
-  @Deprecated
-  @POST
-  @Path("/tables/validateTableAndSchema")
-  @Consumes(MediaType.APPLICATION_JSON)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Validate table config for a table along with 
specified schema",
-      notes = "Deprecated. Use /tableConfigs/validate instead."
-          + "Validate given table config and schema. If specified schema is 
null, attempt to retrieve schema using the "
-          + "table name. This API returns the table config that matches the 
one you get from 'GET /tables/{tableName}'."
-          + " This allows us to validate table config before apply.")
-  @ManualAuthorization // performed after parsing TableAndSchemaConfig
-  public String validateTableAndSchema(TableAndSchemaConfig tableSchemaConfig,
-      @ApiParam(value = "comma separated list of validation type(s) to skip. 
supported types: (ALL|TASK|UPSERT)")
-      @QueryParam("validationTypesToSkip") @Nullable String typesToSkip, 
@Context HttpHeaders httpHeaders,
-      @Context Request request) {
-    TableConfig tableConfig = tableSchemaConfig.getTableConfig();
-    String tableNameWithType = 
DatabaseUtils.translateTableName(tableConfig.getTableName(), httpHeaders);
-    tableConfig.setTableName(tableNameWithType);
-    // Handle legacy config
-    SegmentsValidationAndRetentionConfig validationConfig = 
tableConfig.getValidationConfig();
-    if (validationConfig.getSchemaName() != null) {
-      
validationConfig.setSchemaName(DatabaseUtils.translateTableName(validationConfig.getSchemaName(),
 httpHeaders));
-    }
-    Schema schema = tableSchemaConfig.getSchema();
-    if (schema == null) {
-      schema = _pinotHelixResourceManager.getSchemaForTableConfig(tableConfig);
-    }
-
-    // validate permission
-    String endpointUrl = request.getRequestURL().toString();
-    AccessControl accessControl = _accessControlFactory.create();
-    AccessControlUtils.validatePermission(tableNameWithType, AccessType.READ, 
httpHeaders, endpointUrl, accessControl);
-    if (!accessControl.hasAccess(httpHeaders, TargetType.TABLE, 
tableNameWithType,
-        Actions.Table.VALIDATE_TABLE_CONFIGS)) {
-      throw new ControllerApplicationException(LOGGER, "Permission denied", 
Response.Status.FORBIDDEN);
-    }
-
-    return validateConfig(tableConfig, schema, typesToSkip).toString();
-  }
-
   private ObjectNode validateConfig(TableConfig tableConfig, Schema schema, 
@Nullable String typesToSkip) {
     try {
       if (schema == null) {
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableSegmentConfigs.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableSegmentConfigs.java
deleted file mode 100644
index b8a788056c..0000000000
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableSegmentConfigs.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.pinot.controller.api.resources;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiKeyAuthDefinition;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.SecurityDefinition;
-import io.swagger.annotations.SwaggerDefinition;
-import javax.inject.Inject;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.apache.pinot.controller.api.access.AccessType;
-import org.apache.pinot.controller.api.access.Authenticate;
-import 
org.apache.pinot.controller.api.exception.ControllerApplicationException;
-import org.apache.pinot.controller.helix.core.PinotHelixResourceManager;
-import org.apache.pinot.core.auth.Actions;
-import org.apache.pinot.core.auth.Authorize;
-import org.apache.pinot.core.auth.TargetType;
-import org.apache.pinot.segment.local.utils.TableConfigUtils;
-import org.apache.pinot.spi.config.table.TableConfig;
-import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.utils.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static 
org.apache.pinot.spi.utils.CommonConstants.SWAGGER_AUTHORIZATION_KEY;
-
-
-@Api(tags = Constants.TABLE_TAG, authorizations = {@Authorization(value = 
SWAGGER_AUTHORIZATION_KEY)})
-@SwaggerDefinition(securityDefinition = 
@SecurityDefinition(apiKeyAuthDefinitions = @ApiKeyAuthDefinition(name =
-    HttpHeaders.AUTHORIZATION, in = 
ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = SWAGGER_AUTHORIZATION_KEY)))
-@Path("/")
-public class PinotTableSegmentConfigs {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(PinotTableSegmentConfigs.class);
-
-  @Inject
-  PinotHelixResourceManager _pinotHelixResourceManager;
-
-  @Deprecated
-  @PUT
-  @Path("/tables/{tableName}/segmentConfigs")
-  @Authorize(targetType = TargetType.TABLE, paramName = "tableName", action = 
Actions.Table.UPDATE_TABLE_CONFIG)
-  @Authenticate(AccessType.UPDATE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation(value = "Update segments configuration",
-      notes = "Updates segmentsConfig section (validation and retention) of a 
table")
-  @ApiResponses(value = {
-      @ApiResponse(code = 200, message = "Success"),
-      @ApiResponse(code = 404, message = "Table not found"),
-      @ApiResponse(code = 500, message = "Internal server error")
-  })
-  public SuccessResponse put(@ApiParam(value = "Table name", required = true) 
@PathParam("tableName") String tableName,
-      String tableConfigString) {
-    TableConfig tableConfig;
-    try {
-      tableConfig = JsonUtils.stringToObject(tableConfigString, 
TableConfig.class);
-      Schema schema = 
_pinotHelixResourceManager.getSchemaForTableConfig(tableConfig);
-      TableConfigUtils.validate(tableConfig, schema);
-    } catch (Exception e) {
-      String msg = String.format("Invalid table config: %s", tableName);
-      throw new ControllerApplicationException(LOGGER, msg, 
Response.Status.BAD_REQUEST, e);
-    }
-    try {
-      _pinotHelixResourceManager
-          
.updateSegmentsValidationAndRetentionConfigFor(tableConfig.getTableName(), 
tableConfig.getTableType(),
-              tableConfig.getValidationConfig());
-      return new SuccessResponse("Update segmentsConfig for table: " + 
tableName);
-    } catch (Exception e) {
-      throw new ControllerApplicationException(LOGGER,
-          String.format("Failed to update segments config for table: %s", 
tableName),
-          Response.Status.INTERNAL_SERVER_ERROR, e);
-    }
-  }
-}
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
index b2d9b2a1ae..09f685e8bb 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
@@ -168,16 +168,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskTypes();
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/taskqueues")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("List all task queues (deprecated)")
-  public Set<String> getTaskQueues() {
-    return _pinotHelixTaskResourceManager.getTaskQueues();
-  }
-
   @GET
   @Path("/tasks/{taskType}/state")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -188,17 +178,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskQueueState(taskType);
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/taskqueuestate/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("Get the state (task queue state) for the given task type 
(deprecated)")
-  public StringResultResponse getTaskQueueStateDeprecated(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType) {
-    return new 
StringResultResponse(_pinotHelixTaskResourceManager.getTaskQueueState(taskType).toString());
-  }
-
   @GET
   @Path("/tasks/{taskType}/tasks")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -366,17 +345,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskDebugInfo(taskName, 
verbosity);
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/tasks/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("List all tasks for the given task type (deprecated)")
-  public Set<String> getTasksDeprecated(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType) {
-    return _pinotHelixTaskResourceManager.getTasks(taskType);
-  }
-
   @GET
   @Path("/tasks/{taskType}/taskstates")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -387,17 +355,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskStates(taskType);
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/taskstates/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("Get a map from task to task state for the given task type 
(deprecated)")
-  public Map<String, TaskState> getTaskStatesDeprecated(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType) {
-    return _pinotHelixTaskResourceManager.getTaskStates(taskType);
-  }
-
   @GET
   @Path("/tasks/task/{taskName}/state")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -408,17 +365,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskState(taskName);
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/taskstate/{taskName}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("Get the task state for the given task (deprecated)")
-  public StringResultResponse getTaskStateDeprecated(
-      @ApiParam(value = "Task name", required = true) @PathParam("taskName") 
String taskName) {
-    return new 
StringResultResponse(String.valueOf(_pinotHelixTaskResourceManager.getTaskState(taskName)));
-  }
-
   @GET
   @Path("/tasks/subtask/{taskName}/state")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -449,17 +395,6 @@ public class PinotTaskRestletResource {
     return _pinotHelixTaskResourceManager.getTaskRuntimeConfig(taskName);
   }
 
-  @Deprecated
-  @GET
-  @Path("/tasks/taskconfig/{taskName}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @ApiOperation("Get the task config (a list of child task configs) for the 
given task (deprecated)")
-  public List<PinotTaskConfig> getTaskConfigsDeprecated(
-      @ApiParam(value = "Task name", required = true) @PathParam("taskName") 
String taskName) {
-    return _pinotHelixTaskResourceManager.getSubtaskConfigs(taskName);
-  }
-
   @GET
   @Path("/tasks/subtask/{taskName}/config")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.GET_TASK)
@@ -720,17 +655,6 @@ public class PinotTaskRestletResource {
     }
   }
 
-  @Deprecated
-  @PUT
-  @Path("/tasks/scheduletasks")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.CREATE_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @Authenticate(AccessType.UPDATE)
-  @ApiOperation("Schedule tasks (deprecated)")
-  public Map<String, String> scheduleTasksDeprecated() {
-    return _pinotTaskManager.scheduleTasks();
-  }
-
   @PUT
   @Path("/tasks/{taskType}/cleanup")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.CLEANUP_TASK)
@@ -743,19 +667,6 @@ public class PinotTaskRestletResource {
     return new SuccessResponse("Successfully cleaned up tasks for task type: " 
+ taskType);
   }
 
-  @Deprecated
-  @PUT
-  @Path("/tasks/cleanuptasks/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.CLEANUP_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @Authenticate(AccessType.UPDATE)
-  @ApiOperation("Clean up finished tasks (COMPLETED, FAILED) for the given 
task type (deprecated)")
-  public SuccessResponse cleanUpTasksDeprecated(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType) {
-    _pinotHelixTaskResourceManager.cleanUpTaskQueue(taskType);
-    return new SuccessResponse("Successfully cleaned up tasks for task type: " 
+ taskType);
-  }
-
   @PUT
   @Path("/tasks/{taskType}/stop")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.STOP_TASK)
@@ -780,28 +691,6 @@ public class PinotTaskRestletResource {
     return new SuccessResponse("Successfully resumed tasks for task type: " + 
taskType);
   }
 
-  @Deprecated
-  @PUT
-  @Path("/tasks/taskqueue/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.UPDATE_TASK_QUEUE)
-  @Produces(MediaType.APPLICATION_JSON)
-  @Authenticate(AccessType.UPDATE)
-  @ApiOperation("Stop/resume a task queue (deprecated)")
-  public SuccessResponse toggleTaskQueueState(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType,
-      @ApiParam(value = "state", required = true) @QueryParam("state") String 
state) {
-    switch (state.toUpperCase()) {
-      case TASK_QUEUE_STATE_STOP:
-        _pinotHelixTaskResourceManager.stopTaskQueue(taskType);
-        return new SuccessResponse("Successfully stopped task queue for task 
type: " + taskType);
-      case TASK_QUEUE_STATE_RESUME:
-        _pinotHelixTaskResourceManager.resumeTaskQueue(taskType);
-        return new SuccessResponse("Successfully resumed task queue for task 
type: " + taskType);
-      default:
-        throw new IllegalArgumentException("Unsupported state: " + state);
-    }
-  }
-
   @DELETE
   @Path("/tasks/{taskType}")
   @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.DELETE_TASK)
@@ -829,19 +718,4 @@ public class PinotTaskRestletResource {
     _pinotHelixTaskResourceManager.deleteTask(taskName, forceDelete);
     return new SuccessResponse("Successfully deleted task: " + taskName);
   }
-
-  @Deprecated
-  @DELETE
-  @Path("/tasks/taskqueue/{taskType}")
-  @Authorize(targetType = TargetType.CLUSTER, action = 
Actions.Cluster.DELETE_TASK)
-  @Produces(MediaType.APPLICATION_JSON)
-  @Authenticate(AccessType.DELETE)
-  @ApiOperation("Delete a task queue (deprecated)")
-  public SuccessResponse deleteTaskQueue(
-      @ApiParam(value = "Task type", required = true) @PathParam("taskType") 
String taskType,
-      @ApiParam(value = "Whether to force delete the task queue (expert only 
option, enable with cautious")
-      @DefaultValue("false") @QueryParam("forceDelete") boolean forceDelete) {
-    _pinotHelixTaskResourceManager.deleteTaskQueue(taskType, forceDelete);
-    return new SuccessResponse("Successfully deleted task queue for task type: 
" + taskType);
-  }
 }
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotUpsertRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotUpsertRestletResource.java
index 9fe7551724..08fc9d6343 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotUpsertRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotUpsertRestletResource.java
@@ -92,6 +92,7 @@ public class PinotUpsertRestletResource {
   @ApiOperation(value = "Estimate memory usage for an upsert table", notes =
       "This API returns the estimated heap usage based on primary key column 
stats."
           + " This allows us to estimate table size before onboarding.")
+  // TODO: Switch to use TableConfigs
   public String estimateHeapUsage(String tableSchemaConfigStr,
       @ApiParam(value = "cardinality", required = true) 
@QueryParam("cardinality") long cardinality,
       @ApiParam(value = "primaryKeySize", defaultValue = "-1") 
@QueryParam("primaryKeySize") int primaryKeySize,
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableAndSchemaConfig.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableAndSchemaConfig.java
index e6f031d9d9..a4a76d1527 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableAndSchemaConfig.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableAndSchemaConfig.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import javax.annotation.Nullable;
+import org.apache.pinot.spi.config.TableConfigs;
 import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.data.Schema;
 import org.apache.pinot.spi.utils.JsonUtils;
@@ -29,7 +30,9 @@ import org.apache.pinot.spi.utils.JsonUtils;
 
 /**
  * Wrapper for TableConfig and Schema used in validation API
+ * @deprecated Use {@link TableConfigs} instead.
  */
+@Deprecated
 public class TableAndSchemaConfig {
   private final TableConfig _tableConfig;
   private final Schema _schema;
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
index 2774971fed..a54648676c 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java
@@ -59,7 +59,6 @@ import javax.ws.rs.NotFoundException;
 import javax.ws.rs.core.Response;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.helix.AccessOption;
 import org.apache.helix.ClusterMessagingService;
@@ -155,10 +154,7 @@ import 
org.apache.pinot.controller.helix.core.util.ZKMetadataUtils;
 import org.apache.pinot.controller.helix.starter.HelixConfig;
 import org.apache.pinot.segment.spi.SegmentMetadata;
 import org.apache.pinot.spi.config.instance.Instance;
-import org.apache.pinot.spi.config.table.IndexingConfig;
-import org.apache.pinot.spi.config.table.SegmentsValidationAndRetentionConfig;
 import org.apache.pinot.spi.config.table.TableConfig;
-import org.apache.pinot.spi.config.table.TableCustomConfig;
 import org.apache.pinot.spi.config.table.TableStats;
 import org.apache.pinot.spi.config.table.TableType;
 import org.apache.pinot.spi.config.table.TagOverrideConfig;
@@ -1977,46 +1973,6 @@ public class PinotHelixResourceManager {
     sendTableConfigRefreshMessage(tableNameWithType);
   }
 
-  public void updateMetadataConfigFor(String tableName, TableType type, 
TableCustomConfig newConfigs)
-      throws Exception {
-    String tableNameWithType = 
TableNameBuilder.forType(type).tableNameWithType(tableName);
-    ImmutablePair<TableConfig, Integer> tableConfigWithVersion =
-        ZKMetadataProvider.getTableConfigWithVersion(_propertyStore, 
tableNameWithType);
-    if (tableConfigWithVersion == null) {
-      throw new RuntimeException("Table: " + tableName + " of type: " + type + 
" does not exist");
-    }
-    TableConfig tableConfig = tableConfigWithVersion.getLeft();
-    tableConfig.setCustomConfig(newConfigs);
-    setExistingTableConfig(tableConfig, tableConfigWithVersion.getRight());
-  }
-
-  public void updateSegmentsValidationAndRetentionConfigFor(String tableName, 
TableType type,
-      SegmentsValidationAndRetentionConfig newConfigs)
-      throws Exception {
-    String tableNameWithType = 
TableNameBuilder.forType(type).tableNameWithType(tableName);
-    ImmutablePair<TableConfig, Integer> tableConfigWithVersion =
-        ZKMetadataProvider.getTableConfigWithVersion(_propertyStore, 
tableNameWithType);
-    if (tableConfigWithVersion == null) {
-      throw new RuntimeException("Table: " + tableName + " of type: " + type + 
" does not exist");
-    }
-    TableConfig tableConfig = tableConfigWithVersion.getLeft();
-    tableConfig.setValidationConfig(newConfigs);
-    setExistingTableConfig(tableConfig, tableConfigWithVersion.getRight());
-  }
-
-  public void updateIndexingConfigFor(String tableName, TableType type, 
IndexingConfig newConfigs)
-      throws Exception {
-    String tableNameWithType = 
TableNameBuilder.forType(type).tableNameWithType(tableName);
-    ImmutablePair<TableConfig, Integer> tableConfigWithVersion =
-        ZKMetadataProvider.getTableConfigWithVersion(_propertyStore, 
tableNameWithType);
-    if (tableConfigWithVersion == null) {
-      throw new RuntimeException("Table: " + tableName + " of type: " + type + 
" does not exist");
-    }
-    TableConfig tableConfig = tableConfigWithVersion.getLeft();
-    tableConfig.setIndexingConfig(newConfigs);
-    setExistingTableConfig(tableConfig, tableConfigWithVersion.getRight());
-  }
-
   public void deleteUser(String username) {
     ZKMetadataProvider.removeUserConfigFromPropertyStore(_propertyStore, 
username);
     LOGGER.info("Deleting user{}: Removed from user resouces", username);
diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotTableRestletResourceTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotTableRestletResourceTest.java
index f1766835fd..54644c26aa 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotTableRestletResourceTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotTableRestletResourceTest.java
@@ -28,7 +28,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.pinot.controller.api.resources.TableAndSchemaConfig;
 import org.apache.pinot.controller.helix.ControllerTest;
 import org.apache.pinot.controller.helix.core.minion.PinotTaskManager;
 import org.apache.pinot.controller.helix.core.rebalance.RebalanceResult;
@@ -672,53 +671,6 @@ public class PinotTableRestletResourceTest extends 
ControllerTest {
     }
   }
 
-  @Test
-  public void testValidateTableAndSchema()
-      throws IOException {
-    String tableName = "verificationTestTableAndSchema";
-    // Create a dummy schema
-    Schema schema = DEFAULT_INSTANCE.createDummySchema(tableName);
-
-    // Create a valid OFFLINE table config
-    TableConfig offlineTableConfig =
-        
_offlineBuilder.setTableName(tableName).setInvertedIndexColumns(Arrays.asList("dimA",
 "dimB")).build();
-    TableAndSchemaConfig tableAndSchemaConfig = new 
TableAndSchemaConfig(offlineTableConfig, schema);
-
-    try {
-      sendPostRequest(
-          StringUtil.join("/", DEFAULT_INSTANCE.getControllerBaseApiUrl(), 
"tables", "validateTableAndSchema"),
-          tableAndSchemaConfig.toJsonString());
-    } catch (IOException e) {
-      fail("Valid table config and schema validation should succeed.");
-    }
-
-    // Add a dummy schema to Pinot
-    DEFAULT_INSTANCE.addDummySchema(tableName);
-    tableAndSchemaConfig = new TableAndSchemaConfig(offlineTableConfig, null);
-    try {
-      sendPostRequest(
-          StringUtil.join("/", DEFAULT_INSTANCE.getControllerBaseApiUrl(), 
"tables", "validateTableAndSchema"),
-          tableAndSchemaConfig.toJsonString());
-    } catch (IOException e) {
-      fail("Valid table config and existing schema validation should 
succeed.");
-    }
-
-    // Create an invalid table config
-    offlineTableConfig =
-        
_offlineBuilder.setTableName(tableName).setInvertedIndexColumns(Arrays.asList("invalidColA",
 "invalidColB"))
-            .build();
-    tableAndSchemaConfig = new TableAndSchemaConfig(offlineTableConfig, 
schema);
-    try {
-      sendPostRequest(
-          StringUtil.join("/", DEFAULT_INSTANCE.getControllerBaseApiUrl(), 
"tables", "validateTableAndSchema"),
-          tableAndSchemaConfig.toJsonString());
-      fail("Validation of an invalid table config and schema should fail.");
-    } catch (IOException e) {
-      // Expected
-      assertTrue(e.getMessage().contains("Got error status code: 400"));
-    }
-  }
-
   @Test
   public void testUnrecognizedProperties()
       throws IOException {
diff --git 
a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/ControllerRequestURLBuilder.java
 
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/ControllerRequestURLBuilder.java
index 66972561f9..2841849f14 100644
--- 
a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/ControllerRequestURLBuilder.java
+++ 
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/ControllerRequestURLBuilder.java
@@ -384,7 +384,7 @@ public class ControllerRequestURLBuilder {
   }
 
   public String forListAllCrcInformationForTable(String tableName) {
-    return StringUtil.join("/", _baseUrl, "tables", tableName, "segments", 
"crc");
+    return StringUtil.join("/", _baseUrl, "segments", tableName, "crc");
   }
 
   public String forDeleteTableWithType(String tableName, String tableType) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to