- update lock
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build is failing Details

master v1.0.56
李光春 2 years ago
parent 02ced2c278
commit 32f2f777b1

1
.gitignore vendored

@ -9,3 +9,4 @@ grpc_build.sh
etcd_server_test.go
etcd_worker_test.go
grpc_server_test.go
/vendor/

@ -1,3 +1,3 @@
package gojobs
const Version = "1.0.55"
const Version = "1.0.56"

@ -6,10 +6,9 @@ require (
github.com/go-redis/redis/v9 v9.0.0-beta.2
github.com/jasonlvhit/gocron v0.0.1
github.com/robfig/cron/v3 v3.0.1
go.dtapp.net/dorm v1.0.17
go.dtapp.net/dorm v1.0.21
go.dtapp.net/goarray v1.0.1
go.dtapp.net/goip v1.0.25
go.dtapp.net/golock v1.0.3
go.dtapp.net/gostring v1.0.6
go.dtapp.net/gotime v1.0.5
google.golang.org/grpc v1.48.0
@ -73,7 +72,7 @@ require (
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
go.dtapp.net/gorandom v1.0.1 // indirect
go.dtapp.net/gorequest v1.0.26 // indirect
go.dtapp.net/gotrace_id v1.0.0 // indirect
go.dtapp.net/gotrace_id v1.0.2 // indirect
go.mongodb.org/mongo-driver v1.10.1 // indirect
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect

@ -519,14 +519,12 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
go.dtapp.net/dorm v1.0.17 h1:3VQKUl05CDxFg3T1c/M8wYf2I+H+oVGBDh4NCV30nn0=
go.dtapp.net/dorm v1.0.17/go.mod h1:bHG7BmgeLaAlc56myYF63lwZAIuMeWRAqHBb/L84dLM=
go.dtapp.net/dorm v1.0.21 h1:e5GccTOkFJ66+fTBu0Voo45Cpj+NKsVYLmq2IKQbH+w=
go.dtapp.net/dorm v1.0.21/go.mod h1:bHG7BmgeLaAlc56myYF63lwZAIuMeWRAqHBb/L84dLM=
go.dtapp.net/goarray v1.0.1 h1:cHNHaJ2MFcuJPA1WKU2PM1EUZShS1vQqEH7n6YXsQVU=
go.dtapp.net/goarray v1.0.1/go.mod h1:/MPhlFCAhQyeNV1M0v1PAOOX33Sg705fVjUgMO12IBQ=
go.dtapp.net/goip v1.0.25 h1:GSgQkR7dc28TX8E1mF3wAy+EEGZ++tgqc8Q85OKZPEY=
go.dtapp.net/goip v1.0.25/go.mod h1:dKeNuWJttH4AvvYVHV0FagB6BVvFM1HGDKFxLKr+hkQ=
go.dtapp.net/golock v1.0.3 h1:9s8DlO6ygNzT2czwpmk6Zf3szMxd3UH+r0m0sf1IIrU=
go.dtapp.net/golock v1.0.3/go.mod h1:GiKLG8gnwHgdP8/g+jn8HCv3HP4iB5Tjj2tnhWNB+Jg=
go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs=
go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8=
go.dtapp.net/gorequest v1.0.26 h1:t+rMW7liLHz1RgY60ztWIghSkTeQePKWM0EsDG1IqMI=
@ -535,8 +533,8 @@ go.dtapp.net/gostring v1.0.6 h1:XqNaThEfHpweLofru5sBqm1UUzc9JWsXyB/M/rTk29w=
go.dtapp.net/gostring v1.0.6/go.mod h1:AMnnLjyNxH+cphxyASJGYCzWpVrkP5RncuVo8xL8s3E=
go.dtapp.net/gotime v1.0.5 h1:12aNgB2ULpP6QgQHEUkLilZ4ASvhpFxMFQkBwn0par8=
go.dtapp.net/gotime v1.0.5/go.mod h1:Gq7eNLr2iMLP18UNWONRq4V3Uhf/ADp4bIrS+Tc6ktY=
go.dtapp.net/gotrace_id v1.0.0 h1:nlI8KEEf2l394SCzmJxffEIiOBfR4kIOuobBhpRSV3g=
go.dtapp.net/gotrace_id v1.0.0/go.mod h1:HDwMY1vLoC759z6VGKVgCpIqwKQTDYV9DNdxiyN1OeQ=
go.dtapp.net/gotrace_id v1.0.2 h1:wSc7dYzkAwSz3MbPu2Io4XqHe0l0dIaJe3vlpDAZrXY=
go.dtapp.net/gotrace_id v1.0.2/go.mod h1:476T5KMJw9c6DM/rJn7y6d28hcNDv4+wew4sd+powes=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=

@ -8,7 +8,6 @@ import (
"go.dtapp.net/goarray"
"go.dtapp.net/goip"
"go.dtapp.net/gojobs/jobs_gorm_model"
"go.dtapp.net/golock"
"log"
"runtime"
)
@ -26,9 +25,9 @@ type JobsGormConfig struct {
// JobsGorm Gorm数据库驱动
type JobsGorm struct {
gormClient *dorm.GormClient // 数据库驱动
redisClient *dorm.RedisClient // 缓存驱动
lockClient *golock.LockRedis // 锁驱动
gormClient *dorm.GormClient // 数据库驱动
redisClient *dorm.RedisClient // 缓存驱动
lockClient *dorm.RedisClientLock // 锁驱动
config struct {
debug bool // 调试
runVersion string // 运行版本
@ -65,12 +64,6 @@ func NewJobsGorm(config *JobsGormConfig) (*JobsGorm, error) {
if config.CurrentIp == "" {
return nil, errors.New("需要配置当前的IP")
}
if config.GormClient == nil {
return nil, errors.New("需要配置数据库驱动")
}
if config.RedisClient == nil {
return nil, errors.New("需要配置缓存数据库驱动")
}
c := &JobsGorm{}
c.gormClient = config.GormClient
@ -82,8 +75,15 @@ func NewJobsGorm(config *JobsGormConfig) (*JobsGorm, error) {
c.config.cornKeyCustom = config.CornKeyCustom
c.config.debug = config.Debug
if c.gormClient.Db == nil {
return nil, errors.New("需要配置数据库驱动")
}
if c.redisClient.Db == nil {
return nil, errors.New("需要配置缓存数据库驱动")
}
// 锁
c.lockClient = golock.NewLockRedis(c.redisClient)
c.lockClient = c.redisClient.NewLock()
// 配置信息
c.config.runVersion = Version

@ -1,22 +1,23 @@
package gojobs
import (
"context"
"fmt"
"go.dtapp.net/gojobs/jobs_gorm_model"
"time"
)
// Lock 上锁
func (j *JobsGorm) Lock(info jobs_gorm_model.Task, id any) (string, error) {
return j.lockClient.Lock(fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id), fmt.Sprintf("已在%s@%s机器上锁成功", j.config.insideIp, j.config.outsideIp), time.Duration(info.Frequency)*3*time.Second)
func (j *JobsGorm) Lock(ctx context.Context, info jobs_gorm_model.Task, id any) (string, error) {
return j.lockClient.Lock(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id), fmt.Sprintf("已在%s@%s机器上锁成功", j.config.insideIp, j.config.outsideIp), time.Duration(info.Frequency)*3*time.Second)
}
// Unlock Lock 解锁
func (j *JobsGorm) Unlock(info jobs_gorm_model.Task, id any) error {
return j.lockClient.Unlock(fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id))
func (j *JobsGorm) Unlock(ctx context.Context, info jobs_gorm_model.Task, id any) error {
return j.lockClient.Unlock(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id))
}
// LockForever 永远上锁
func (j *JobsGorm) LockForever(info jobs_gorm_model.Task, id any) (string, error) {
return j.lockClient.LockForever(fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id), fmt.Sprintf("已在%s@%s机器永远上锁成功", j.config.insideIp, j.config.outsideIp))
func (j *JobsGorm) LockForever(ctx context.Context, info jobs_gorm_model.Task, id any) (string, error) {
return j.lockClient.LockForever(ctx, fmt.Sprintf("%s%s%v%s%v", j.config.lockKeyPrefix, j.config.lockKeySeparator, info.Type, j.config.lockKeySeparator, id), fmt.Sprintf("已在%s@%s机器永远上锁成功", j.config.insideIp, j.config.outsideIp))
}

Loading…
Cancel
Save