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-kie.git


The following commit(s) were added to refs/heads/master by this push:
     new aecd491  init db in code,upgrade go chassis (#155)
aecd491 is described below

commit aecd4914420464f35c2cc3a38cf3d9ca13563243
Author: Shawn <[email protected]>
AuthorDate: Wed Aug 26 16:49:27 2020 +0800

    init db in code,upgrade go chassis (#155)
---
 deployments/db.js                       |  1 +
 examples/dev/conf/chassis.yaml          | 15 ++++-----
 examples/dev/conf/microservice.yaml     |  7 ++--
 go.mod                                  |  2 +-
 go.sum                                  |  4 +++
 server/service/mongo/session/session.go | 58 ++++++++++++++++++++++++++-------
 6 files changed, 63 insertions(+), 24 deletions(-)

diff --git a/deployments/db.js b/deployments/db.js
index a880136..42b919f 100644
--- a/deployments/db.js
+++ b/deployments/db.js
@@ -121,6 +121,7 @@ db.label.createIndex({"id": 1}, { unique: true } );
 db.label.createIndex({format: 1,domain:1,project:1},{ unique: true });
 db.polling_detail.createIndex({"id": 1}, { unique: true } );
 db.polling_detail.createIndex({session_id:1,domain:1}, { unique: true } );
+db.counter.createIndex({name: 1,domain:1},{ unique: true });
 db.view.createIndex({"id": 1}, { unique: true } );
 db.view.createIndex({display:1,domain:1,project:1},{ unique: true });
 //db config
diff --git a/examples/dev/conf/chassis.yaml b/examples/dev/conf/chassis.yaml
index 2b221ab..a6c9bce 100755
--- a/examples/dev/conf/chassis.yaml
+++ b/examples/dev/conf/chassis.yaml
@@ -1,9 +1,8 @@
 ---
-cse:
-  service:
-    registry:
-      disabled: true
-      address: http://127.0.0.1:30100
+servicecomb:
+  registry:
+    disabled: true
+    address: http://127.0.0.1:30100
   protocols:
     rest:
       listenAddress: 127.0.0.1:30110
@@ -18,10 +17,8 @@ cse:
       rest: 32768 #32K
     timeout:
       rest: 60s
-servicecomb:
-  service:
-    quota:
-      plugin: build-in
+  quota:
+    plugin: build-in
 # ssl:
 #   Provider.cipherPlugin: default
 #   Provider.verifyPeer: false
diff --git a/examples/dev/conf/microservice.yaml 
b/examples/dev/conf/microservice.yaml
index 0bd45c8..63a6b4b 100755
--- a/examples/dev/conf/microservice.yaml
+++ b/examples/dev/conf/microservice.yaml
@@ -1,4 +1,5 @@
 ---
-service_description:
-  name: servicecomb-kie
-  version: 0.1.0
+servicecomb:
+  service:
+    name: servicecomb-kie
+    version: 0.1.0
\ No newline at end of file
diff --git a/go.mod b/go.mod
index 96263af..2ab2da5 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ require (
        github.com/apache/servicecomb-service-center 
v0.0.0-20200817025835-7bb8c4eb9421
        github.com/emicklei/go-restful v2.12.0+incompatible
        github.com/go-chassis/go-archaius v1.3.2
-       github.com/go-chassis/go-chassis v0.0.0-20200818014813-890265d94a1c
+       github.com/go-chassis/go-chassis v0.0.0-20200826064053-d90be848aa10
        github.com/go-chassis/paas-lager v1.1.1
        github.com/go-mesh/openlogging v1.0.1
        github.com/go-playground/universal-translator v0.17.0
diff --git a/go.sum b/go.sum
index 761e471..a19ce3e 100644
--- a/go.sum
+++ b/go.sum
@@ -81,6 +81,8 @@ github.com/gin-contrib/sse 
v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NB
 github.com/gin-gonic/gin v1.4.0/go.mod 
h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
 github.com/go-chassis/foundation v0.1.1-0.20191113114104-2b05871e9ec4 
h1:wx8JXvg/n4i8acXsBJ5zIkiK7EO2kn/HuEjKK3kSgv8=
 github.com/go-chassis/foundation v0.1.1-0.20191113114104-2b05871e9ec4/go.mod 
h1:21/ajGtgJlWTCeM0TxGJdRhO8bJkKirWyV8Stlh6g6c=
+github.com/go-chassis/foundation v0.1.1-0.20200825060850-b16bf420f7b3 
h1:c+bwT0qLY69jSU8TmzuNcb9UL/QFAiU96kjuX5TMiQc=
+github.com/go-chassis/foundation v0.1.1-0.20200825060850-b16bf420f7b3/go.mod 
h1:21/ajGtgJlWTCeM0TxGJdRhO8bJkKirWyV8Stlh6g6c=
 github.com/go-chassis/go-archaius v1.2.1-0.20200309104817-8c3d4e87d33c 
h1:pimEM4Oy/Uf4xG4G7TrRUQbIRFAfHiarxDQQS2gmKaM=
 github.com/go-chassis/go-archaius v1.2.1-0.20200309104817-8c3d4e87d33c/go.mod 
h1:gVP52u/jCU0fgUjXdUW1VLp5YLLJ+Yl2zoOPrLM/WOM=
 github.com/go-chassis/go-archaius v1.2.1/go.mod 
h1:gVP52u/jCU0fgUjXdUW1VLp5YLLJ+Yl2zoOPrLM/WOM=
@@ -110,6 +112,8 @@ github.com/go-chassis/go-chassis 
v0.0.0-20200817095942-bf386412b79e h1:OElheBuqH
 github.com/go-chassis/go-chassis v0.0.0-20200817095942-bf386412b79e/go.mod 
h1:nMWwWrgDEyDKnMQLE5Gt65RdwbgrQg5amt4BqNFY09g=
 github.com/go-chassis/go-chassis v0.0.0-20200818014813-890265d94a1c 
h1:aAokQ5cgL/6a8tJsj3W6qr7M3EBoMs3MzlfYqalLLto=
 github.com/go-chassis/go-chassis v0.0.0-20200818014813-890265d94a1c/go.mod 
h1:nMWwWrgDEyDKnMQLE5Gt65RdwbgrQg5amt4BqNFY09g=
+github.com/go-chassis/go-chassis v0.0.0-20200826064053-d90be848aa10 
h1:eImN6UFx4pksyxJQnT1laHoVOwSlhEC1ONhJQc4Ix08=
+github.com/go-chassis/go-chassis v0.0.0-20200826064053-d90be848aa10/go.mod 
h1:ZzLCaQFgFHbkwf8grJrbzBLlE19iz+4LMgNtjGlnanU=
 github.com/go-chassis/go-chassis v1.8.2-0.20200310060113-4b383ba3d3f0 
h1:YD9MtuYIpQb+EKxIzV/swdXUhnV5PtXtSW696JiwW1c=
 github.com/go-chassis/go-chassis v1.8.2-0.20200310060113-4b383ba3d3f0/go.mod 
h1:sFnVxSvprpy6umPFK4uSdfCDdfqdgbp3FdW/CG0VNnE=
 github.com/go-chassis/go-chassis v1.8.2-0.20200331092516-8cf0b374128b 
h1:AvZjvPQdla1KoLrxbU8bohR3Y9FYnScZFY5KnK2HnSU=
diff --git a/server/service/mongo/session/session.go 
b/server/service/mongo/session/session.go
index ab9db6e..37193ec 100644
--- a/server/service/mongo/session/session.go
+++ b/server/service/mongo/session/session.go
@@ -32,6 +32,7 @@ import (
        "gopkg.in/mgo.v2"
        "io/ioutil"
        "reflect"
+       "strings"
        "sync"
        "time"
 
@@ -74,6 +75,11 @@ var (
        ErrGetPipeline  = errors.New("can not get criteria")
 )
 
+const (
+       MsgExists    = "already exists"
+       MsgDuplicate = "duplicate key error collection"
+)
+
 var client *mongo.Client
 var once sync.Once
 var db *mongo.Database
@@ -136,6 +142,7 @@ func Init() error {
                })
 
        })
+       EnsureDB()
        return nil
 }
 
@@ -191,23 +198,19 @@ func GetColInfo(ctx context.Context, name string) 
(*CollectionInfo, error) {
        return nil, ErrGetPipeline
 }
 
-//InitMongodb get collection info
-func InitMongodb() {
+//EnsureDB build mongo db schema
+func EnsureDB() {
        session, err := mgo.Dial(config.GetDB().URI)
        if err != nil {
-               panic(err)
+               openlogging.Fatal("can not dial db:" + err.Error())
        }
        defer session.Close()
        session.SetMode(mgo.Monotonic, true)
-       //counter
-       c := session.DB(DBName).C(CollectionCounter)
-       docs := map[string]interface{}{"name": "revision_counter", "count": 1, 
"domain": "default"}
-       err = c.Insert(docs)
-       if err != nil {
-               panic(err)
-       }
+
+       ensureRevisionCounter(session)
+
        //kv
-       c = session.DB(DBName).C("kv")
+       c := session.DB(DBName).C("kv")
        err = c.Create(&mgo.CollectionInfo{Validator: bson.M{
                "key":     bson.M{"$exists": true},
                "domain":  bson.M{"$exists": true},
@@ -282,4 +285,37 @@ func InitMongodb() {
        if err != nil {
                panic(err)
        }
+
+}
+
+func ensureRevisionCounter(session *mgo.Session) {
+       c := session.DB(DBName).C(CollectionCounter)
+       err := c.Create(&mgo.CollectionInfo{Validator: bson.M{
+               "name":   bson.M{"$exists": true},
+               "domain": bson.M{"$exists": true},
+               "count":  bson.M{"$exists": true},
+       }})
+       if err != nil {
+               if strings.Contains(err.Error(), MsgExists) {
+                       openlogging.Debug(err.Error())
+               } else {
+                       openlogging.Fatal(err.Error())
+               }
+       }
+       err = c.EnsureIndex(mgo.Index{
+               Key:    []string{"name", "domain"},
+               Unique: true,
+       })
+       if err != nil {
+               openlogging.Fatal(err.Error())
+       }
+       docs := map[string]interface{}{"name": "revision_counter", "count": 1, 
"domain": "default"}
+       err = c.Insert(docs)
+       if err != nil {
+               if strings.Contains(err.Error(), MsgDuplicate) {
+                       openlogging.Debug(err.Error())
+               } else {
+                       openlogging.Fatal(err.Error())
+               }
+       }
 }

Reply via email to