Browse Source

加锁的操作移动到client

pull/1/head
Sydonian 2 years ago
parent
commit
06b4b781b9
5 changed files with 253 additions and 1 deletions
  1. +1
    -1
      pkg/distlock/reqbuilder/lock_request_builder.go
  2. +63
    -0
      pkg/distlock/reqbuilder/metadata_object.go
  3. +63
    -0
      pkg/distlock/reqbuilder/metadata_object_block.go
  4. +63
    -0
      pkg/distlock/reqbuilder/metadata_object_rep.go
  5. +63
    -0
      pkg/distlock/reqbuilder/metadata_storage_object.go

+ 1
- 1
pkg/distlock/reqbuilder/lock_request_builder.go View File

@@ -20,7 +20,7 @@ func (b *LockRequestBuilder) Build() distlock.LockRequest {
}
}

func (b *LockRequestBuilder) MutextLock(svc *service.Service) (*service.Mutex, error) {
func (b *LockRequestBuilder) MutexLock(svc *service.Service) (*service.Mutex, error) {
mutex := service.NewMutex(svc, b.Build())
err := mutex.Lock()
if err != nil {


+ 63
- 0
pkg/distlock/reqbuilder/metadata_object.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 MetadataObjectLockReqBuilder struct {
*MetadataLockReqBuilder
}

func (b *MetadataLockReqBuilder) Object() *MetadataObjectLockReqBuilder {
return &MetadataObjectLockReqBuilder{MetadataLockReqBuilder: b}
}

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

+ 63
- 0
pkg/distlock/reqbuilder/metadata_object_block.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 MetadataObjectBlockLockReqBuilder struct {
*MetadataLockReqBuilder
}

func (b *MetadataLockReqBuilder) ObjectBlock() *MetadataObjectBlockLockReqBuilder {
return &MetadataObjectBlockLockReqBuilder{MetadataLockReqBuilder: b}
}

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

+ 63
- 0
pkg/distlock/reqbuilder/metadata_object_rep.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 MetadataObjectRepLockReqBuilder struct {
*MetadataLockReqBuilder
}

func (b *MetadataLockReqBuilder) ObjectRep() *MetadataObjectRepLockReqBuilder {
return &MetadataObjectRepLockReqBuilder{MetadataLockReqBuilder: b}
}

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

+ 63
- 0
pkg/distlock/reqbuilder/metadata_storage_object.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 MetadataStorageObjectLockReqBuilder struct {
*MetadataLockReqBuilder
}

func (b *MetadataLockReqBuilder) StorageObject() *MetadataStorageObjectLockReqBuilder {
return &MetadataStorageObjectLockReqBuilder{MetadataLockReqBuilder: b}
}

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

Loading…
Cancel
Save