Browse Source

Object相关的操作增加锁

pull/1/head
Sydonian 2 years ago
parent
commit
d9ddc35382
3 changed files with 69 additions and 6 deletions
  1. +63
    -0
      pkg/distlock/reqbuilder/metadata_cache.go
  2. +2
    -2
      pkg/distlock/reqbuilder/metadata_object.go
  3. +4
    -4
      pkg/distlock/reqbuilder/metadata_user_bucket.go

+ 63
- 0
pkg/distlock/reqbuilder/metadata_cache.go View File

@@ -0,0 +1,63 @@
package reqbuilder

import (
"gitlink.org.cn/cloudream/common/pkg/distlock"
"gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider"
)

type MetadataCacheLockReqBuilder struct {
*MetadataLockReqBuilder
}

func (b *MetadataLockReqBuilder) Cache() *MetadataCacheLockReqBuilder {
return &MetadataCacheLockReqBuilder{MetadataLockReqBuilder: b}
}

func (b *MetadataCacheLockReqBuilder) ReadOne(objectID int) *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_ELEMENT_READ_LOCK,
Target: *lockprovider.NewStringLockTarget().Add(objectID),
})
return b
}
func (b *MetadataCacheLockReqBuilder) WriteOne(objectID int) *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK,
Target: *lockprovider.NewStringLockTarget().Add(objectID),
})
return b
}
func (b *MetadataCacheLockReqBuilder) CreateOne() *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK,
Target: *lockprovider.NewStringLockTarget(),
})
return b
}
func (b *MetadataCacheLockReqBuilder) ReadAny() *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_SET_READ_LOCK,
Target: *lockprovider.NewStringLockTarget(),
})
return b
}
func (b *MetadataCacheLockReqBuilder) WriteAny() *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_SET_WRITE_LOCK,
Target: *lockprovider.NewStringLockTarget(),
})
return b
}
func (b *MetadataCacheLockReqBuilder) CreateAny() *MetadataCacheLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Cache"),
Name: lockprovider.METADATA_SET_CREATE_LOCK,
Target: *lockprovider.NewStringLockTarget(),
})
return b
}

+ 2
- 2
pkg/distlock/reqbuilder/metadata_object.go View File

@@ -29,11 +29,11 @@ func (b *MetadataObjectLockReqBuilder) WriteOne(objectID int) *MetadataObjectLoc
})
return b
}
func (b *MetadataObjectLockReqBuilder) CreateOne() *MetadataObjectLockReqBuilder {
func (b *MetadataObjectLockReqBuilder) CreateOne(bucketID int, objectName string) *MetadataObjectLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("Object"),
Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK,
Target: *lockprovider.NewStringLockTarget(),
Target: *lockprovider.NewStringLockTarget().Add(bucketID, objectName),
})
return b
}


+ 4
- 4
pkg/distlock/reqbuilder/metadata_user_bucket.go View File

@@ -13,19 +13,19 @@ func (b *MetadataLockReqBuilder) UserBucket() *MetadataUserBucketLockReqBuilder
return &MetadataUserBucketLockReqBuilder{MetadataLockReqBuilder: b}
}

func (b *MetadataUserBucketLockReqBuilder) ReadOne(bucketID int) *MetadataUserBucketLockReqBuilder {
func (b *MetadataUserBucketLockReqBuilder) ReadOne(userID int, bucketID int) *MetadataUserBucketLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("UserBucket"),
Name: lockprovider.METADATA_ELEMENT_READ_LOCK,
Target: *lockprovider.NewStringLockTarget().Add(bucketID),
Target: *lockprovider.NewStringLockTarget().Add(userID, bucketID),
})
return b
}
func (b *MetadataUserBucketLockReqBuilder) WriteOne(bucketID int) *MetadataUserBucketLockReqBuilder {
func (b *MetadataUserBucketLockReqBuilder) WriteOne(userID int, bucketID int) *MetadataUserBucketLockReqBuilder {
b.locks = append(b.locks, distlock.Lock{
Path: b.makePath("UserBucket"),
Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK,
Target: *lockprovider.NewStringLockTarget().Add(bucketID),
Target: *lockprovider.NewStringLockTarget().Add(userID, bucketID),
})
return b
}


Loading…
Cancel
Save