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")
}