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