github-actions[bot] commented on code in PR #67545:
URL: https://github.com/apache/doris/pull/67545#discussion_r3944025989


##########
fe/fe-connector/fe-connector-paimon/src/main/java/org/apache/doris/connector/paimon/PaimonConnector.java:
##########
@@ -465,11 +469,32 @@ private Catalog createCatalog() {
                         hmsAuth, storageHadoopConfig,
                         "Failed to create Paimon catalog with HMS metastore");
             }
+            case PaimonCatalogProperties.DLF: {
+                // Legacy DLF catalogs often expose OSS only through dlf.* 
aliases and an oss:// warehouse.
+                // Check the resolved storage bindings here so those catalogs 
remain valid while non-OSS
+                // backends cannot be passed to Paimon's DLF Hive catalog.
+                if 
(!hasDlfCompatibleStorage(storage().getStorageProperties())) {
+                    throw new IllegalStateException("Paimon DLF metastore 
requires OSS storage properties.");
+                }
+                DlfMetaStoreProperties dlf = (DlfMetaStoreProperties)
+                        MetaStoreProviders.bind(catalogProps.getRaw(), 
storageHadoopConfig);
+                Map<String, String> dlfConf = new 
HashMap<>(dlf.toDlfCatalogConf());
+                dlfConf.put(PaimonCatalogFactory.DLF_CLIENT_POOL_IDENTITY,
+                        PaimonCatalogFactory.dlfClientPoolIdentity(dlfConf));
+                HiveConf hc = PaimonCatalogFactory.assembleHiveConf(null, 
dlfConf);
+                return createCatalogFromContext(CatalogContext.create(options, 
hc), flavor,
+                        "Failed to create Paimon catalog with DLF metastore");
+            }
             default:
                 throw new IllegalArgumentException("Unknown 
paimon.catalog.type value: " + flavor);
         }
     }
 
+    static boolean hasDlfCompatibleStorage(List<StorageProperties> 
storageProperties) {
+        return storageProperties.stream().anyMatch(storage -> 
"OSS".equals(storage.providerName())

Review Comment:
   [P1] Route plain OSS paths through the accepted OSS-HDFS binding
   
   This branch now accepts `OSS_HDFS`, but runtime routing still classifies a 
normal `oss://bucket/...` warehouse or data path as native `OSS` unless the URI 
text itself contains `oss-dls`. Because `bindAll()` omits native OSS once 
OSS-HDFS matches, and the S3-family fallback rejects the `OSSHDFS` family, 
`normalizeStorageUri()` throws `No storage properties found for schema: oss` 
for native data and deletion-vector paths; the full-context FE probe fails the 
same way. This is distinct from the mixed-case endpoint issue: a correctly 
converted endpoint does not help a bucket-only data URI select the bound 
adapter. Please route bare `oss://` to the sole OSS-HDFS binding (or normalize 
through that selected adapter) and cover an OSS-HDFS-only native scan with 
plain bucket URIs.



-- 
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