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

zhangliang2022 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 25ef5be70 fix: apicollector might report table exists when running in 
parallel (#5736)
25ef5be70 is described below

commit 25ef5be709d05e974a65b808e77e2e8e6e3773eb
Author: Klesh Wong <[email protected]>
AuthorDate: Tue Jul 25 16:21:11 2023 +0800

    fix: apicollector might report table exists when running in parallel (#5736)
    
    * fix: apicollector might report table exists when running in parallel
    
    * fix: ensure unlocked
---
 backend/helpers/pluginhelper/api/api_collector.go | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/backend/helpers/pluginhelper/api/api_collector.go 
b/backend/helpers/pluginhelper/api/api_collector.go
index 0a0b15bc9..9d6c5a4aa 100644
--- a/backend/helpers/pluginhelper/api/api_collector.go
+++ b/backend/helpers/pluginhelper/api/api_collector.go
@@ -24,6 +24,7 @@ import (
        "io"
        "net/http"
        "net/url"
+       "sync"
        "text/template"
        "time"
 
@@ -136,6 +137,15 @@ func NewApiCollector(args ApiCollectorArgs) 
(*ApiCollector, errors.Error) {
        return apiCollector, nil
 }
 
+var rawTableAutoMigrateLock sync.Mutex
+
+func (collector *ApiCollector) ensureRawTable(table string) errors.Error {
+       db := collector.args.Ctx.GetDal()
+       rawTableAutoMigrateLock.Lock()
+       defer rawTableAutoMigrateLock.Unlock()
+       return db.AutoMigrate(&RawData{}, dal.From(collector.table))
+}
+
 // Execute will start collection
 func (collector *ApiCollector) Execute() errors.Error {
        logger := collector.args.Ctx.GetLogger()
@@ -143,7 +153,7 @@ func (collector *ApiCollector) Execute() errors.Error {
 
        // make sure table is created
        db := collector.args.Ctx.GetDal()
-       err := db.AutoMigrate(&RawData{}, dal.From(collector.table))
+       err := collector.ensureRawTable(collector.table)
        if err != nil {
                return errors.Default.Wrap(err, "error auto-migrating 
collector")
        }

Reply via email to