924060929 commented on code in PR #68238:
URL: https://github.com/apache/doris/pull/68238#discussion_r4056461749


##########
fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonExternalMetaCache.java:
##########
@@ -118,6 +121,38 @@ public Table getPaimonTable(NameMapping nameMapping) {
         return 
tableEntry.get(nameMapping.getCtlId()).get(nameMapping).getPaimonTable();
     }
 
+    @Override
+    public void invalidateTable(long catalogId, String dbName, String 
tableName) {
+        try {
+            invalidatePaimonTables(catalogId, nameMapping -> 
matchTable(nameMapping, dbName, tableName));
+        } finally {
+            super.invalidateTable(catalogId, dbName, tableName);
+        }
+    }
+
+    @Override
+    public void invalidateDb(long catalogId, String dbName) {
+        try {
+            invalidatePaimonTables(catalogId, nameMapping -> 
matchDb(nameMapping, dbName));
+        } finally {
+            super.invalidateDb(catalogId, dbName);
+        }
+    }
+
+    private void invalidatePaimonTables(long catalogId, Predicate<NameMapping> 
predicate) {
+        MetaCacheEntry<NameMapping, PaimonTableCacheValue> tables = 
tableEntry.getIfInitialized(catalogId);
+        if (tables == null) {
+            return;
+        }
+        List<NameMapping> nameMappings = new ArrayList<>();
+        tables.forEach((nameMapping, ignored) -> {
+            if (predicate.test(nameMapping)) {
+                nameMappings.add(nameMapping);
+            }
+        });
+        nameMappings.forEach(tableLoader::invalidate);
+    }

Review Comment:
   Fixed in 04922626513. Paimon now opts into invalidation even when its Doris 
cache group is absent, and TABLE/DATABASE/CATALOG refresh routes invalidate 
SDK-only handles. The regression warms only Paimon's CachingCatalog (no 
initCatalog/tableEntry) and exercises the real ExternalMetaCacheMgr routes.



##########
fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonExternalMetaCache.java:
##########
@@ -118,6 +121,38 @@ public Table getPaimonTable(NameMapping nameMapping) {
         return 
tableEntry.get(nameMapping.getCtlId()).get(nameMapping).getPaimonTable();
     }
 
+    @Override
+    public void invalidateTable(long catalogId, String dbName, String 
tableName) {
+        try {
+            invalidatePaimonTables(catalogId, nameMapping -> 
matchTable(nameMapping, dbName, tableName));
+        } finally {
+            super.invalidateTable(catalogId, dbName, tableName);
+        }
+    }
+
+    @Override
+    public void invalidateDb(long catalogId, String dbName) {
+        try {
+            invalidatePaimonTables(catalogId, nameMapping -> 
matchDb(nameMapping, dbName));
+        } finally {

Review Comment:
   Fixed in 04922626513. Paimon 1.4.2 has no public database-cache invalidation 
API, so databaseExist now uses the live listDatabases path instead of cached 
getDatabase. Database/catalog refresh also batch-invalidates matching SDK table 
handles, with regression coverage for the existence path and database-scoped 
refresh.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to