You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2021/01/06 14:44:13 UTC

[incubator-doris] branch master updated: [Function] Add timeout of connection when downloading the function objectFile from URL (#5135)

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 65d33cf  [Function] Add timeout of connection when downloading the function objectFile from URL (#5135)
65d33cf is described below

commit 65d33cf43c837e56a2a36e78b358bfc0a9d1916b
Author: caiconghui <55...@users.noreply.github.com>
AuthorDate: Wed Jan 6 22:43:52 2021 +0800

    [Function] Add timeout of connection when downloading the function objectFile from URL (#5135)
    
    Co-authored-by: caiconghui [蔡聪辉] <ca...@xiaomi.com>
---
 .../apache/doris/analysis/CreateFunctionStmt.java  | 35 +++++++++++-----------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
index 4b31a82..2a4f7ab 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
@@ -26,6 +26,7 @@ import org.apache.doris.common.ErrorCode;
 import org.apache.doris.common.ErrorReport;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.UserException;
+import org.apache.doris.common.util.Util;
 import org.apache.doris.mysql.privilege.PrivPredicate;
 import org.apache.doris.qe.ConnectContext;
 
@@ -36,8 +37,6 @@ import org.apache.commons.codec.binary.Hex;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Map;
@@ -69,6 +68,9 @@ public class CreateFunctionStmt extends DdlStmt {
     private Function function;
     private String checksum;
 
+    // timeout for both connection and read. 10 seconds is long enough.
+    private static final int HTTP_TIMEOUT_MS = 10000;
+
     public CreateFunctionStmt(boolean isAggregate, FunctionName functionName, FunctionArgsDef argsDef,
                               TypeDef returnType, TypeDef intermediateType, Map<String, String> properties) {
         this.functionName = functionName;
@@ -139,22 +141,21 @@ public class CreateFunctionStmt extends DdlStmt {
             checksum = "";
             return;
         }
-        URL url = new URL(objectFile);
-        URLConnection urlConnection = url.openConnection();
-        InputStream inputStream = urlConnection.getInputStream();
-
-        MessageDigest digest = MessageDigest.getInstance("MD5");
-        byte[] buf = new byte[4096];
-        int bytesRead = 0;
-        do {
-            bytesRead = inputStream.read(buf);
-            if (bytesRead < 0) {
-                break;
-            }
-            digest.update(buf, 0, bytesRead);
-        } while (true);
 
-        checksum = Hex.encodeHexString(digest.digest());
+        try (InputStream inputStream = Util.getInputStreamFromUrl(objectFile, null, HTTP_TIMEOUT_MS, HTTP_TIMEOUT_MS)) {
+            MessageDigest digest = MessageDigest.getInstance("MD5");
+            byte[] buf = new byte[4096];
+            int bytesRead = 0;
+            do {
+                bytesRead = inputStream.read(buf);
+                if (bytesRead < 0) {
+                    break;
+                }
+                digest.update(buf, 0, bytesRead);
+            } while (true);
+
+            checksum = Hex.encodeHexString(digest.digest());
+        }
     }
 
     private void analyzeUda() throws AnalysisException {


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