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

(pinot) branch master updated: Add new TableDataManager interface: updateCachedTableConfigAndSchema (#18124)

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 5e81f53e47a Add new TableDataManager interface: updateCachedTableConfigAndSchema (#18124)
5e81f53e47a is described below

commit 5e81f53e47af709dd22a480d1a232cb64ee2a917
Author: Jhow <44...@users.noreply.github.com>
AuthorDate: Wed Apr 8 16:13:07 2026 -0700

    Add new TableDataManager interface: updateCachedTableConfigAndSchema (#18124)
---
 .../controller/helix/core/PinotHelixResourceManager.java     | 12 ++++++------
 .../apache/pinot/core/data/manager/BaseTableDataManager.java |  9 +++++++--
 .../core/data/manager/offline/DimensionTableDataManager.java |  2 +-
 .../pinot/segment/local/data/manager/TableDataManager.java   |  9 +++++++--
 4 files changed, 21 insertions(+), 11 deletions(-)

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 e439bce4ac9..800dd437403 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
@@ -3258,7 +3258,7 @@ public class PinotHelixResourceManager {
   }
 
   /// Sends table config refresh message to brokers.
-  private void sendTableConfigRefreshMessage(String tableNameWithType) {
+  public void sendTableConfigRefreshMessage(String tableNameWithType) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     TableConfigRefreshMessage message = new TableConfigRefreshMessage(tableNameWithType);
     int numMessagesSent =
@@ -3272,7 +3272,7 @@ public class PinotHelixResourceManager {
   }
 
   /// Sends table config and schema refresh message to servers.
-  private void sendTableConfigSchemaRefreshMessage(String tableNameWithType) {
+  public void sendTableConfigSchemaRefreshMessage(String tableNameWithType) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     TableConfigSchemaRefreshMessage message = new TableConfigSchemaRefreshMessage(tableNameWithType);
     int numMessagesSent = MessagingServiceUtils.send(messagingService, message, tableNameWithType);
@@ -3283,7 +3283,7 @@ public class PinotHelixResourceManager {
     }
   }
 
-  private void sendLogicalTableConfigRefreshMessage(String logicalTableName) {
+  public void sendLogicalTableConfigRefreshMessage(String logicalTableName) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     LogicalTableConfigRefreshMessage message = new LogicalTableConfigRefreshMessage(logicalTableName);
     int numMessagesSent =
@@ -3296,7 +3296,7 @@ public class PinotHelixResourceManager {
     }
   }
 
-  private void sendApplicationQpsQuotaRefreshMessage(String appName) {
+  public void sendApplicationQpsQuotaRefreshMessage(String appName) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     ApplicationQpsQuotaRefreshMessage message = new ApplicationQpsQuotaRefreshMessage(appName);
     int numMessagesSent = MessagingServiceUtils.send(messagingService, message, Helix.BROKER_RESOURCE_INSTANCE);
@@ -3308,7 +3308,7 @@ public class PinotHelixResourceManager {
     }
   }
 
-  private void sendDatabaseConfigRefreshMessage(String databaseName) {
+  public void sendDatabaseConfigRefreshMessage(String databaseName) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     DatabaseConfigRefreshMessage message = new DatabaseConfigRefreshMessage(databaseName);
     int numMessagesSent = MessagingServiceUtils.send(messagingService, message, Helix.BROKER_RESOURCE_INSTANCE);
@@ -3320,7 +3320,7 @@ public class PinotHelixResourceManager {
     }
   }
 
-  private void sendRoutingTableRebuildMessage(String tableNameWithType) {
+  public void sendRoutingTableRebuildMessage(String tableNameWithType) {
     ClusterMessagingService messagingService = _helixZkManager.getMessagingService();
     RoutingTableRebuildMessage message = new RoutingTableRebuildMessage(tableNameWithType);
     int numMessagesSent =
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
index 815eb5bdb55..ea46c9320f0 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
@@ -218,7 +218,7 @@ public abstract class BaseTableDataManager implements TableDataManager {
         .maximumSize(instanceDataManagerConfig.getDeletedSegmentsCacheSize())
         .expireAfterWrite(instanceDataManagerConfig.getDeletedSegmentsCacheTtlMinutes(), TimeUnit.MINUTES)
         .build();
-    _cachedTableConfigAndSchema = Pair.of(tableConfig, schema);
+    updateCachedTableConfigAndSchema(tableConfig, schema);
 
     _peerDownloadScheme = tableConfig.getValidationConfig().getPeerSegmentDownloadScheme();
     if (_peerDownloadScheme == null) {
@@ -419,7 +419,7 @@ public abstract class BaseTableDataManager implements TableDataManager {
     Preconditions.checkState(schema != null, "Failed to find schema for table: %s", _tableNameWithType);
     IndexLoadingConfig indexLoadingConfig = new IndexLoadingConfig(_instanceDataManagerConfig, tableConfig, schema);
     indexLoadingConfig.setTableDataDir(_tableDataDir);
-    _cachedTableConfigAndSchema = Pair.of(tableConfig, schema);
+    updateCachedTableConfigAndSchema(tableConfig, schema);
     return indexLoadingConfig;
   }
 
@@ -428,6 +428,11 @@ public abstract class BaseTableDataManager implements TableDataManager {
     return _cachedTableConfigAndSchema;
   }
 
+  @Override
+  public void updateCachedTableConfigAndSchema(TableConfig tableConfig, Schema schema) {
+    _cachedTableConfigAndSchema = Pair.of(tableConfig, schema);
+  }
+
   @Override
   public void addNewOnlineSegment(SegmentZKMetadata zkMetadata, IndexLoadingConfig indexLoadingConfig)
       throws Exception {
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java
index a1084f02367..9ee1d4de02f 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java
@@ -77,7 +77,7 @@ public class DimensionTableDataManager extends OfflineTableDataManager {
     }
   };
 
-  private DimensionTableDataManager() {
+  protected DimensionTableDataManager() {
   }
 
   /**
diff --git a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/data/manager/TableDataManager.java b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/data/manager/TableDataManager.java
index 903eeb9aba3..15a8a7565e6 100644
--- a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/data/manager/TableDataManager.java
+++ b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/data/manager/TableDataManager.java
@@ -333,11 +333,16 @@ public interface TableDataManager {
 
   /**
    * Returns the cached latest {@link TableConfig} and {@link Schema} pair for the table. The cache is refreshed when
-   * invoking {@link #fetchIndexLoadingConfig()}, and should not be modified. We cache them as a pair to ensure they are
-   * updated at once to avoid race conditions.
+   * invoking {@link #fetchIndexLoadingConfig()} or {@link #updateCachedTableConfigAndSchema(TableConfig, Schema)}, and
+   * should not be modified. We cache them as a pair to ensure they are updated at once to avoid race conditions.
    */
   Pair<TableConfig, Schema> getCachedTableConfigAndSchema();
 
+  /**
+   * Update the table config and schema for the table in cache.
+   */
+  void updateCachedTableConfigAndSchema(TableConfig config, Schema schema);
+
   /**
    * Interface to handle segment state transitions from CONSUMING to DROPPED
    *


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