From d9ddc353826a7a35d85471e9d6b39a2920cfe0ed Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Wed, 14 Jun 2023 14:37:24 +0800 Subject: [PATCH] =?UTF-8?q?Object=E7=9B=B8=E5=85=B3=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=A2=9E=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/distlock/reqbuilder/metadata_cache.go | 63 +++++++++++++++++++ pkg/distlock/reqbuilder/metadata_object.go | 4 +- .../reqbuilder/metadata_user_bucket.go | 8 +-- 3 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 pkg/distlock/reqbuilder/metadata_cache.go diff --git a/pkg/distlock/reqbuilder/metadata_cache.go b/pkg/distlock/reqbuilder/metadata_cache.go new file mode 100644 index 0000000..0638a0f --- /dev/null +++ b/pkg/distlock/reqbuilder/metadata_cache.go @@ -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 +} diff --git a/pkg/distlock/reqbuilder/metadata_object.go b/pkg/distlock/reqbuilder/metadata_object.go index 14c7acf..0fe7d46 100644 --- a/pkg/distlock/reqbuilder/metadata_object.go +++ b/pkg/distlock/reqbuilder/metadata_object.go @@ -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 } diff --git a/pkg/distlock/reqbuilder/metadata_user_bucket.go b/pkg/distlock/reqbuilder/metadata_user_bucket.go index ffab827..5328257 100644 --- a/pkg/distlock/reqbuilder/metadata_user_bucket.go +++ b/pkg/distlock/reqbuilder/metadata_user_bucket.go @@ -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 }