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

klesh pushed a commit to branch release-v0.18
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.18 by this push:
     new 1e22e0dd3 cherry-pick Kw 5733 apicollector create rawtable conflict to 
v0.18 (beta3) (#5738)
1e22e0dd3 is described below

commit 1e22e0dd376c33b0e2b9531354727783f62a719d
Author: Klesh Wong <[email protected]>
AuthorDate: Tue Jul 25 17:26:07 2023 +0800

    cherry-pick Kw 5733 apicollector create rawtable conflict to v0.18 (beta3) 
(#5738)
    
    * 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