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