You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by sn...@apache.org on 2022/12/08 04:13:11 UTC

[pinot] branch master updated: Make GET /tableConfigs backwards compatible in case schema does not match raw table name (#9922)

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

snlee 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 17cee10ceb Make GET /tableConfigs backwards compatible in case schema does not match raw table name (#9922)
17cee10ceb is described below

commit 17cee10ceb838fd792af7720c23955a74c99ee0c
Author: Tim Santos <ti...@cortexdata.io>
AuthorDate: Wed Dec 7 20:13:05 2022 -0800

    Make GET /tableConfigs backwards compatible in case schema does not match raw table name (#9922)
    
    * Make GET /tableConfigs backwards compatible in case schema does not match raw table name
    
    * Cleanup unit test
---
 .../api/resources/TableConfigsRestletResource.java |  2 +-
 .../api/TableConfigsRestletResourceTest.java       | 31 ++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
index b11642fe53..8d8daff4d5 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
@@ -141,7 +141,7 @@ public class TableConfigsRestletResource {
       @ApiParam(value = "Raw table name", required = true) @PathParam("tableName") String tableName) {
 
     try {
-      Schema schema = _pinotHelixResourceManager.getSchema(tableName);
+      Schema schema = _pinotHelixResourceManager.getTableSchema(tableName);
       TableConfig offlineTableConfig = _pinotHelixResourceManager.getOfflineTableConfig(tableName);
       TableConfig realtimeTableConfig = _pinotHelixResourceManager.getRealtimeTableConfig(tableName);
       TableConfigs config = new TableConfigs(tableName, schema, offlineTableConfig, realtimeTableConfig);
diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableConfigsRestletResourceTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableConfigsRestletResourceTest.java
index a24e774981..a506f38ac3 100644
--- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableConfigsRestletResourceTest.java
+++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableConfigsRestletResourceTest.java
@@ -27,6 +27,7 @@ import java.util.List;
 import org.apache.pinot.controller.helix.ControllerTest;
 import org.apache.pinot.core.realtime.impl.fakestream.FakeStreamConfigUtils;
 import org.apache.pinot.spi.config.TableConfigs;
+import org.apache.pinot.spi.config.table.SegmentsValidationAndRetentionConfig;
 import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.config.table.TableType;
 import org.apache.pinot.spi.config.table.TunerConfig;
@@ -554,6 +555,36 @@ public class TableConfigsRestletResourceTest extends ControllerTest {
     sendDeleteRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forTableConfigsDelete(tableName));
   }
 
+  /**
+   * Tests get TableConfigs for backwards compatibility
+   */
+  @Test
+  public void testGetConfigCompatibility()
+      throws IOException {
+    // Should not fail if schema name does not match raw table name in the case they are created separately
+    String schemaName = "schema1";
+    Schema schema = createDummySchema(schemaName);
+    sendPostRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), schema.toPrettyJsonString());
+    String tableName = "table1";
+    TableConfig offlineTableConfig = createOfflineTableConfig(tableName);
+    SegmentsValidationAndRetentionConfig validationConfig = new SegmentsValidationAndRetentionConfig();
+    validationConfig.setSchemaName(schemaName);
+    validationConfig.setReplication("1");
+    offlineTableConfig.setValidationConfig(validationConfig);
+    sendPostRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forTableCreate(),
+        offlineTableConfig.toJsonString());
+
+    String response = sendGetRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forTableConfigsGet(tableName));
+    TableConfigs tableConfigsResponse = JsonUtils.stringToObject(response, TableConfigs.class);
+    Assert.assertEquals(tableConfigsResponse.getTableName(), tableName);
+    Assert.assertEquals(tableConfigsResponse.getOffline().getTableName(), offlineTableConfig.getTableName());
+    Assert.assertEquals(tableConfigsResponse.getSchema().getSchemaName(), schema.getSchemaName());
+
+    // Delete
+    sendDeleteRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forTableDelete(tableName));
+    sendDeleteRequest(DEFAULT_INSTANCE.getControllerRequestURLBuilder().forSchemaDelete(schemaName));
+  }
+
   @AfterClass
   public void tearDown() {
     DEFAULT_INSTANCE.cleanup();


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