This is an automated email from the ASF dual-hosted git repository.
tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push:
new fca5aa9 handle create index duplicate error (#863)
fca5aa9 is described below
commit fca5aa9fdc73227a6356fec6719985e53a3da446
Author: panqian <[email protected]>
AuthorDate: Fri Feb 19 18:51:19 2021 +0800
handle create index duplicate error (#863)
---
datasource/mongo/mongo.go | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/datasource/mongo/mongo.go b/datasource/mongo/mongo.go
index b4a8ce1..95f762f 100644
--- a/datasource/mongo/mongo.go
+++ b/datasource/mongo/mongo.go
@@ -131,10 +131,7 @@ func EnsureService() {
serviceIndexs = append(serviceIndexs, serviceIDIndex, serviceIndex)
err = client.GetMongoClient().CreateIndexes(context.Background(),
CollectionService, serviceIndexs)
- if err != nil {
- log.Fatal("failed to create service collection indexs", err)
- return
- }
+ wrapCreateIndexesError(err)
}
func EnsureInstance() {
@@ -150,10 +147,7 @@ func EnsureInstance() {
instanceIndexs = append(instanceIndexs, instanceIndex,
instanceServiceIndex)
err = client.GetMongoClient().CreateIndexes(context.Background(),
CollectionInstance, instanceIndexs)
- if err != nil {
- log.Fatal("failed to create instance collection indexs", err)
- return
- }
+ wrapCreateIndexesError(err)
}
func EnsureSchema() {
@@ -169,10 +163,7 @@ func EnsureSchema() {
schemaIndexs = append(schemaIndexs, schemaServiceIndex)
err = client.GetMongoClient().CreateIndexes(context.Background(),
CollectionSchema, schemaIndexs)
- if err != nil {
- log.Fatal("failed to create schema collection indexs", err)
- return
- }
+ wrapCreateIndexesError(err)
}
func EnsureRule() {
@@ -188,10 +179,7 @@ func EnsureRule() {
ruleIndexs = append(ruleIndexs, ruleServiceIndex)
err = client.GetMongoClient().CreateIndexes(context.Background(),
CollectionRule, ruleIndexs)
- if err != nil {
- log.Fatal("failed to create rule collection indexs", err)
- return
- }
+ wrapCreateIndexesError(err)
}
func EnsureDep() {
@@ -224,6 +212,17 @@ func wrapCreateCollectionError(err error) {
}
}
+func wrapCreateIndexesError(err error) {
+ if err != nil {
+ // commandError can be returned by any operation
+ cmdErr, ok := err.(mongo.CommandError)
+ if ok && cmdErr.Code == client.DuplicateKey {
+ return
+ }
+ log.Fatal("failed to create indexes ", err)
+ }
+}
+
func (ds *DataSource) initStore() {
if !config.GetRegistry().EnableCache {
log.Debug("cache is disabled")