Browse Source

#2225

add log
tags/v1.22.9.2^2
chenyifan01 3 years ago
parent
commit
0efaa9b16c
10 changed files with 44 additions and 3 deletions
  1. +1
    -0
      services/reward/cloubrain_deduct.go
  2. +2
    -0
      services/reward/notify.go
  3. +15
    -0
      services/reward/operator.go
  4. +1
    -0
      services/reward/period_task.go
  5. +7
    -2
      services/reward/point/account/point_account.go
  6. +5
    -0
      services/reward/point/point_operate.go
  7. +4
    -0
      services/reward/record.go
  8. +2
    -0
      services/reward/serial.go
  9. +3
    -1
      services/task/task.go
  10. +4
    -0
      services/task/task_config.go

+ 1
- 0
services/reward/cloubrain_deduct.go View File

@@ -22,6 +22,7 @@ func StartAndGetCloudBrainPointDeductTask(task models.Cloudbrain) (*models.Rewar

spec := models.GetResourceSpec(task.JobType, task.ResourceSpecId)
if spec == nil || spec.UnitPrice == 0 {
log.Debug("GetResourceSpec failed,spec is nil or UnitPrice = 0")
return nil, nil
}



+ 2
- 0
services/reward/notify.go View File

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

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/redis/redis_client"
"code.gitea.io/gitea/modules/redis/redis_key"
"code.gitea.io/gitea/modules/timeutil"
@@ -24,6 +25,7 @@ func NotifyRewardOperation(userId, amount int64, rewardType models.RewardType, o
func GetRewardOperation(since, until timeutil.TimeStamp) []models.UserRewardOperation {
list, err := redis_client.ZRangeByScore(redis_key.RewardOperateNotification(), float64(since), float64(until))
if err != nil {
log.Error("GetRewardOperation ZRangeByScore error. %v", err)
return nil
}
if len(list) == 0 {


+ 15
- 0
services/reward/operator.go View File

@@ -57,6 +57,7 @@ func Operate(ctx *models.RewardOperateContext) error {
//get operator
operator := GetOperator(ctx.Reward.Type)
if operator == nil {
log.Error("operator of reward type is not exist,ctx=%v", ctx)
return errors.New("operator of reward type is not exist")
}

@@ -71,6 +72,7 @@ func Operate(ctx *models.RewardOperateContext) error {
//new reward operate record
recordId, err := initRewardOperateRecord(ctx)
if err != nil {
log.Error("initRewardOperateRecord error,err=%v", err)
return err
}

@@ -78,6 +80,7 @@ func Operate(ctx *models.RewardOperateContext) error {

//operate
if err := operator.Operate(ctx); err != nil {
log.Error("operator Operate error,err=%v", err)
UpdateRewardRecordToFinalStatus(ctx.SourceType.Name(), ctx.RequestId, models.OperateStatusFailed)
return err
}
@@ -101,9 +104,11 @@ func GetOperator(rewardType models.RewardType) RewardOperator {
func isHandled(sourceType string, requestId string, operateType string) (bool, error) {
_, err := models.GetPointOperateRecordBySourceTypeAndRequestId(sourceType, requestId, operateType)
if err != nil {
log.Error("operator isHandled error. %v", err)
if models.IsErrRecordNotExist(err) {
return false, nil
}
log.Error("GetPointOperateRecordBySourceTypeAndRequestId ZRangeByScore error. %v", err)
return false, err
}
return true, nil
@@ -113,6 +118,7 @@ func isHandled(sourceType string, requestId string, operateType string) (bool, e
func initRewardOperateRecord(ctx *models.RewardOperateContext) (string, error) {
sn, err := generateOperateSerialNo(ctx.OperateType, ctx.Reward.Type)
if err != nil {
log.Error("generateOperateSerialNo error. %v", err)
return "", err
}
record := &models.RewardOperateRecord{
@@ -131,6 +137,7 @@ func initRewardOperateRecord(ctx *models.RewardOperateContext) (string, error) {
}
_, err = models.InsertRewardOperateRecord(record)
if err != nil {
log.Error("InsertRewardOperateRecord error. %v", err)
return "", err
}
return record.SerialNo, nil
@@ -139,6 +146,7 @@ func initRewardOperateRecord(ctx *models.RewardOperateContext) (string, error) {
func createPeriodicRewardOperateRecord(ctx *models.StartPeriodicTaskOpts) (string, error) {
sn, err := generateOperateSerialNo(ctx.OperateType, ctx.RewardType)
if err != nil {
log.Error("createPeriodic generateOperateSerialNo error. %v", err)
return "", err
}
record := &models.RewardOperateRecord{
@@ -156,6 +164,7 @@ func createPeriodicRewardOperateRecord(ctx *models.StartPeriodicTaskOpts) (strin
}
_, err = models.InsertRewardOperateRecord(record)
if err != nil {
log.Error("createPeriodic InsertRewardOperateRecord error. %v", err)
return "", err
}
return record.SerialNo, nil
@@ -164,6 +173,7 @@ func createPeriodicRewardOperateRecord(ctx *models.StartPeriodicTaskOpts) (strin
func UpdateRewardRecordToFinalStatus(sourceType, requestId, newStatus string) error {
_, err := models.UpdateRewardRecordToFinalStatus(sourceType, requestId, newStatus)
if err != nil {
log.Error("UpdateRewardRecord UpdateRewardRecordToFinalStatus error. %v", err)
return err
}
return nil
@@ -184,6 +194,7 @@ func StartAndGetPeriodicTask(opts *models.StartPeriodicTaskOpts) (*models.Reward
var rewardLock = redis_lock.NewDistributeLock(redis_key.RewardOperateLock(opts.RequestId, opts.SourceType.Name(), opts.OperateType.Name()))
isOk, err := rewardLock.Lock(3 * time.Second)
if err != nil {
log.Error("StartAndGetPeriodicTask RewardOperateLock error. %v", err)
return nil, err
}
if !isOk {
@@ -210,10 +221,12 @@ func StartAndGetPeriodicTask(opts *models.StartPeriodicTaskOpts) (*models.Reward
//new reward operate record
recordId, err := createPeriodicRewardOperateRecord(opts)
if err != nil {
log.Error("StartAndGetPeriodicTask createPeriodicRewardOperateRecord error. %v", err)
return nil, err
}

if err = NewRewardPeriodicTask(recordId, opts); err != nil {
log.Error("StartAndGetPeriodicTask NewRewardPeriodicTask error. %v", err)
UpdateRewardRecordToFinalStatus(opts.SourceType.Name(), opts.RequestId, models.OperateStatusFailed)
return nil, err
}
@@ -258,6 +271,8 @@ func StopPeriodicTask(sourceType models.SourceType, sourceId string, operateType
func generateOperateSerialNo(operateType models.RewardOperateType, rewardType models.RewardType) (string, error) {
s, err := GetSerialNoByRedis()
if err != nil {
log.Error("generateOperateSerialNo error. %v", err)

return "", err
}



+ 1
- 0
services/reward/period_task.go View File

@@ -67,6 +67,7 @@ func RunRewardTask(t models.RewardPeriodicTask, now time.Time) error {
}
n, _ := countExecuteTimes(t, now)
if n == 0 {
log.Info("countExecuteTimes result is 0")
return nil
}



+ 7
- 2
services/reward/point/account/point_account.go View File

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

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/redis/redis_client"
"code.gitea.io/gitea/modules/redis/redis_key"
"code.gitea.io/gitea/modules/redis/redis_lock"
@@ -24,10 +25,12 @@ func GetAccount(userId int64) (*models.PointAccount, error) {
if models.IsErrRecordNotExist(err) {
a, err := InitAccount(userId)
if err != nil {
log.Error("InitAccount error,err=%v", err)
return nil, err
}
return a, nil
}
log.Error("GetAccountByUserId error,err=%v", err)
return nil, err
}
jsonStr, _ := json.Marshal(account)
@@ -39,6 +42,7 @@ func InitAccount(userId int64) (*models.PointAccount, error) {
lock := redis_lock.NewDistributeLock(redis_key.PointAccountInitLock(userId))
isOk, err := lock.LockWithWait(3*time.Second, 3*time.Second)
if err != nil {
log.Error("PointAccountInitLock error,err=%v", err)
return nil, err
}
if isOk {
@@ -71,8 +75,9 @@ func IsPointBalanceEnough(targetUserId int64, jobType string, resourceSpecId int
if spec == nil {
return true
}
a, error := GetAccount(targetUserId)
if error != nil {
a, err := GetAccount(targetUserId)
if err != nil {
log.Error("IsPointBalanceEnough GetAccount error,err=%v", err)
return false
}
return a.Balance >= spec.UnitPrice


+ 5
- 0
services/reward/point/point_operate.go View File

@@ -18,6 +18,7 @@ type PointOperator struct {
func (operator *PointOperator) IsLimited(ctx *models.RewardOperateContext) error {
realAmount, err := limiter.CheckLimit(ctx.SourceType.Name(), models.LimitTypeRewardPoint, ctx.TargetUserId, ctx.Reward.Amount, ctx.RejectPolicy)
if err != nil {
log.Error("PointOperator IsLimited error,err=%v", err)
return err
}
if realAmount < ctx.Reward.Amount {
@@ -30,12 +31,14 @@ func (operator *PointOperator) IsLimited(ctx *models.RewardOperateContext) error
func (operator *PointOperator) Operate(ctx *models.RewardOperateContext) error {
a, err := account.GetAccount(ctx.TargetUserId)
if err != nil || a == nil {
log.Error("operator get account error error,err=%v", err)
return errors.New("get account error")
}

lock := redis_lock.NewDistributeLock(redis_key.PointAccountOperateLock(a.AccountCode))
isOk, err := lock.LockWithWait(3*time.Second, 3*time.Second)
if err != nil {
log.Error("Get PointAccountOperateLock error,err=%v", err)
return err
}
if isOk {
@@ -51,11 +54,13 @@ func (operator *PointOperator) Operate(ctx *models.RewardOperateContext) error {
err = na.Decrease(ctx.Reward.Amount, ctx.SourceId)
}
if err != nil {
log.Error("operate account balance error,err=%v", err)
return err
}
redis_client.Del(redis_key.PointAccountInfo(ctx.TargetUserId))

} else {
log.Error("Get account operate lock failed,ctx=%v", ctx)
return errors.New("Get account operate lock failed")
}
return nil


+ 4
- 0
services/reward/record.go View File

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

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
)

type RecordResponse struct {
@@ -14,6 +15,8 @@ type RecordResponse struct {
func GetRewardRecordList(opts models.RewardRecordListOpts) (*RecordResponse, error) {
l, n, err := models.GetRewardRecordList(opts)
if err != nil {
log.Error("GetRewardRecordList error. %v", err)

return nil, err
}
if len(l) == 0 {
@@ -21,6 +24,7 @@ func GetRewardRecordList(opts models.RewardRecordListOpts) (*RecordResponse, err
}
result, err := l.ToShow()
if err != nil {
log.Error("GetRewardRecordList ToShow error. %v", err)
return nil, err
}



+ 2
- 0
services/reward/serial.go View File

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

import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/redis/redis_client"
"code.gitea.io/gitea/modules/redis/redis_key"
"fmt"
@@ -12,6 +13,7 @@ func GetSerialNoByRedis() (string, error) {
now := time.Now()
n, err := redis_client.IncrBy(redis_key.RewardSerialCounter(now), 1)
if err != nil {
log.Error("GetSerialNoByRedis RewardSerialCounter error. %v", err)
return "", err
}
if n == 1 {


+ 3
- 1
services/task/task.go View File

@@ -61,6 +61,7 @@ func accomplish(action models.Action) error {
ActionId: action.ID,
})
if err != nil {
log.Error("InsertTaskAccomplishLog error,%v", err)
return err
}

@@ -78,12 +79,13 @@ func accomplish(action models.Action) error {
OperateType: models.OperateTypeIncrease,
RejectPolicy: models.FillUp,
})
log.Debug("accomplish success,action=%v", action)
return nil
}

func isLimited(userId int64, config *models.TaskConfig, rejectPolicy models.LimiterRejectPolicy) bool {
if _, err := limiter.CheckLimit(config.TaskCode, models.LimitTypeTask, userId, 1, rejectPolicy); err != nil {
log.Error(" isLimited CheckLimit error. %v", err)
return true
}
return false


+ 4
- 0
services/task/task_config.go View File

@@ -16,6 +16,7 @@ import (
func GetTaskConfig(taskType string) (*models.TaskConfig, error) {
list, err := GetTaskConfigList()
if err != nil {
log.Error(" GetTaskConfigList error. %v", err)
return nil, err
}
for _, v := range list {
@@ -39,6 +40,7 @@ func GetTaskConfigList() ([]*models.TaskConfig, error) {
}
config, err := models.GetTaskConfigList()
if err != nil {
log.Error(" GetTaskConfigList from model error. %v", err)
if models.IsErrRecordNotExist(err) {
redis_client.Setex(redisKey, redis_key.EMPTY_REDIS_VAL, 5*time.Second)
return nil, nil
@@ -61,6 +63,7 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
r := make([]*models.TaskConfigWithLimit, 0)
l, err := limiter.GetLimitersByLimitType(models.LimitTypeTask)
if err != nil {
log.Error(" GetLimitersByLimitType from redis error. %v", err)
return nil, err
}
for i := 0; i < len(list); i++ {
@@ -88,6 +91,7 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {

func AddTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error {
if config.TaskCode == "" || config.AwardType == "" {
log.Error(" AddTaskConfig param error")
return errors.New("param error")
}
err := models.AddTaskConfig(config, doer)


Loading…
Cancel
Save