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


##########
fe/fe-core/src/main/java/org/apache/doris/backup/Repository.java:
##########
@@ -527,7 +631,9 @@ public boolean ping() {
             errMsg = TimeUtils.longToTimeString(System.currentTimeMillis())
                     + ": Invalid path. " + path + ", error: " + e.getMessage();
             return false;
-        } catch (IOException e) {
+        } catch (IOException | RuntimeException e) {

Review Comment:
   [P2] Contain late filesystem linkage failures inside the repository boundary
   
   A provider can bind and construct its filesystem successfully, then resolve 
a missing class only when `exists()` or `list()` first executes. This catch now 
contains `RuntimeException` but still lets `NoClassDefFoundError` escape. 
`RepositoryMgr`'s new outer catch only logs it, so `ping()` leaves `errMsg` 
null or stale; `listSnapshots()` likewise bypasses its `Status` path and live 
BACKUP submission throws instead of reporting repository unavailability. Please 
contain `LinkageError` at the repository I/O boundary (including list paths), 
record or return the normal error status, and test a filesystem whose first I/O 
call fails to link.



##########
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateResourceInfo.java:
##########
@@ -92,9 +95,21 @@ public void analyzeResourceType() throws UserException {
         }
 
         // Facade twin of the legacy AzureProperties.guessIsMe static 
(guess-only heuristics).
-        if (StorageAdapter.matchesProviderGuess("AZURE", properties)) {
-            resourceType = ResourceType.AZURE;
-            return;
+        try {
+            if (StorageAdapter.matchesProviderGuess("AZURE", properties)) {
+                resourceType = ResourceType.AZURE;
+                return;
+            }
+        } catch (StoragePropertiesException azureAbsent) {
+            // The Azure plugin is not loaded, so its guess cannot be asked - 
but the predicate it is
+            // made of (provider=azure, or an Azure Blob endpoint) lives in 
the SPI and still can. An
+            // Azure-shaped map must be refused here rather than fall through 
to type=s3: the resource
+            // type is persisted and ALTER RESOURCE cannot change it, so an 
S3Resource created while
+            // the plugin was absent would stay one after the plugin is 
repaired.
+            if 
(AzureBlobEndpointSignals.guessIsAzure(FileSystemPluginManager.withProbeContext(properties)))
 {

Review Comment:
   [P2] Preserve an explicitly empty Azure suffix whitelist
   
   When `Config.azure_blob_host_suffixes` is cleared at runtime, 
`withProbeContext()` omits the marker, while `AzureBlobEndpointSignals` treats 
an absent marker as “use built-in defaults.” This new Azure-plugin-absent 
fallback therefore reclassifies `*.blob.core.windows.net` as Azure and rejects 
`type=s3` even though the live whitelist is empty. Please carry an explicit 
empty override through the probe context, distinguish it from no context, and 
cover both loaded- and absent-Azure-provider paths.



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