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]