You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2022/09/05 01:42:37 UTC

[incubator-devlake] branch main updated: fix: the timeout of ApiClient is incorrectly overridden #2938

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

abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 6f19ff8a fix: the timeout of ApiClient is incorrectly overridden #2938
6f19ff8a is described below

commit 6f19ff8af52d0c20136fc2ca992f654ce0cd0850
Author: tk103331 <tk...@gmail.com>
AuthorDate: Mon Sep 5 09:35:09 2022 +0800

    fix: the timeout of ApiClient is incorrectly overridden #2938
---
 plugins/helper/api_async_client.go | 19 +++++++++++++++----
 plugins/helper/api_client.go       |  5 +++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/plugins/helper/api_async_client.go b/plugins/helper/api_async_client.go
index fea1f122..bdcb527d 100644
--- a/plugins/helper/api_async_client.go
+++ b/plugins/helper/api_async_client.go
@@ -46,6 +46,8 @@ type ApiAsyncClient struct {
 	numOfWorkers int
 }
 
+const DEFAULT_TIMEOUT = 10 * time.Second
+
 // CreateAsyncApiClient creates a new ApiAsyncClient
 func CreateAsyncApiClient(
 	taskCtx core.TaskContext,
@@ -57,11 +59,20 @@ func CreateAsyncApiClient(
 	if err != nil {
 		return nil, errors.BadInput.Wrap(err, "failed to parse API_RETRY", errors.AsUserMessage())
 	}
-	timeout, err := utils.StrToDurationOr(taskCtx.GetConfig("API_TIMEOUT"), 10*time.Second)
-	if err != nil {
-		return nil, errors.BadInput.Wrap(err, "failed to parse API_TIMEOUT", errors.AsUserMessage())
+
+	timeoutConf := taskCtx.GetConfig("API_TIMEOUT")
+	if timeoutConf != "" {
+		// override timeout value if API_TIMEOUT is provided
+		timeout, err := time.ParseDuration(timeoutConf)
+		if err != nil {
+			return nil, errors.BadInput.Wrap(err, "failed to parse API_TIMEOUT", errors.AsUserMessage())
+		}
+		apiClient.SetTimeout(timeout)
+	} else if apiClient.GetTimeout() == 0 {
+		// Use DEFAULT_TIMEOUT when API_TIMEOUT is empty and ApiClient has no timeout set
+		apiClient.SetTimeout(DEFAULT_TIMEOUT)
 	}
-	apiClient.SetTimeout(timeout)
+
 	apiClient.SetLogger(taskCtx.GetLogger())
 
 	globalRateLimitPerHour, err := utils.StrToIntOr(taskCtx.GetConfig("API_REQUESTS_PER_HOUR"), 18000)
diff --git a/plugins/helper/api_client.go b/plugins/helper/api_client.go
index 07ab53fc..c97d5459 100644
--- a/plugins/helper/api_client.go
+++ b/plugins/helper/api_client.go
@@ -135,6 +135,11 @@ func (apiClient *ApiClient) SetTimeout(timeout time.Duration) {
 	apiClient.client.Timeout = timeout
 }
 
+// GetTimeout FIXME ...
+func (apiClient *ApiClient) GetTimeout() time.Duration {
+	return apiClient.client.Timeout
+}
+
 // SetHeaders FIXME ...
 func (apiClient *ApiClient) SetHeaders(headers map[string]string) {
 	apiClient.headers = headers