Browse Source

加锁的操作移动到client

gitlink
Sydonian 2 years ago
parent
commit
380bf8c369
4 changed files with 10 additions and 34 deletions
  1. +3
    -5
      internal/config/config.go
  2. +1
    -13
      internal/services/bucket.go
  3. +5
    -8
      internal/services/service.go
  4. +1
    -8
      main.go

+ 3
- 5
internal/config/config.go View File

@@ -1,7 +1,6 @@
package config

import (
"gitlink.org.cn/cloudream/common/pkg/distlock"
log "gitlink.org.cn/cloudream/common/pkg/logger"
c "gitlink.org.cn/cloudream/common/utils/config"
db "gitlink.org.cn/cloudream/db/config"
@@ -9,10 +8,9 @@ import (
)

type Config struct {
Logger log.Config `json:"logger"`
DB db.Config `json:"db"`
RabbitMQ racfg.Config `json:"rabbitMQ"`
DistLock distlock.Config `json:"distlock"`
Logger log.Config `json:"logger"`
DB db.Config `json:"db"`
RabbitMQ racfg.Config `json:"rabbitMQ"`
}

var cfg Config


+ 1
- 13
internal/services/bucket.go View File

@@ -2,7 +2,6 @@ package services

import (
"gitlink.org.cn/cloudream/common/consts/errorcode"
"gitlink.org.cn/cloudream/common/pkg/distlock/reqbuilder"
log "gitlink.org.cn/cloudream/common/pkg/logger"
"gitlink.org.cn/cloudream/db/model"
ramsg "gitlink.org.cn/cloudream/rabbitmq/message"
@@ -40,17 +39,6 @@ func (svc *Service) GetBucketObjects(msg *coormsg.GetBucketObjects) *coormsg.Get
}

func (svc *Service) CreateBucket(msg *coormsg.CreateBucket) *coormsg.CreateBucketResp {
mutex, err := reqbuilder.NewBuilder().
Metadata().Bucket().CreateOne(msg.Body.UserID, msg.Body.BucketName).
// TODO 可以考虑二次加锁,加的更精确
UserBucket().CreateAny().
MutextLock(svc.distlock)
if err != nil {
log.Warnf("acquire locks failed, err: %s", err.Error())
return ramsg.ReplyFailed[coormsg.CreateBucketResp](errorcode.OPERATION_FAILED, "acquire locks failed")
}
defer mutex.Unlock()

bucketID, err := svc.db.Bucket().Create(svc.db.SQLCtx(), msg.Body.UserID, msg.Body.BucketName)

if err != nil {
@@ -64,7 +52,7 @@ func (svc *Service) CreateBucket(msg *coormsg.CreateBucket) *coormsg.CreateBucke
}

func (svc *Service) DeleteBucket(msg *coormsg.DeleteBucket) *coormsg.DeleteBucketResp {
err := svc.db.Bucket().Delete(svc.db.SQLCtx(), msg.Body.UserID, msg.Body.BucketID)
err := svc.db.Bucket().Delete(svc.db.SQLCtx(), msg.Body.BucketID)

if err != nil {
log.WithField("UserID", msg.Body.UserID).


+ 5
- 8
internal/services/service.go View File

@@ -1,21 +1,18 @@
package services

import (
distlock "gitlink.org.cn/cloudream/common/pkg/distlock/service"
mydb "gitlink.org.cn/cloudream/db"
sccli "gitlink.org.cn/cloudream/rabbitmq/client/scanner"
)

type Service struct {
db *mydb.DB
scanner *sccli.Client
distlock *distlock.Service
db *mydb.DB
scanner *sccli.Client
}

func NewService(db *mydb.DB, scanner *sccli.Client, distlock *distlock.Service) *Service {
func NewService(db *mydb.DB, scanner *sccli.Client) *Service {
return &Service{
db: db,
scanner: scanner,
distlock: distlock,
db: db,
scanner: scanner,
}
}

+ 1
- 8
main.go View File

@@ -4,7 +4,6 @@ import (
"fmt"
"os"

distlocksvc "gitlink.org.cn/cloudream/common/pkg/distlock/service"
"gitlink.org.cn/cloudream/common/pkg/logger"
log "gitlink.org.cn/cloudream/common/pkg/logger"
"gitlink.org.cn/cloudream/coordinator/internal/config"
@@ -37,13 +36,7 @@ func main() {
log.Fatalf("new scanner client failed, err: %s", err.Error())
}

distlockSvc, err := distlocksvc.NewService(&config.Cfg().DistLock)
if err != nil {
log.Warnf("new distlock service failed, err: %s", err.Error())
os.Exit(1)
}

coorSvr, err := rasvr.NewServer(services.NewService(db, scanner, distlockSvc), &config.Cfg().RabbitMQ)
coorSvr, err := rasvr.NewServer(services.NewService(db, scanner), &config.Cfg().RabbitMQ)
if err != nil {
log.Fatalf("new coordinator server failed, err: %s", err.Error())
}


Loading…
Cancel
Save