diff --git a/app/main.go b/app/main.go index 8a5ec67..2e5a0b8 100644 --- a/app/main.go +++ b/app/main.go @@ -19,16 +19,17 @@ func wait() { } func main() { - if len(os.Args) > 1 && os.Args[1] == "dtmsvr" { // 实际运行,只启动dtmsvr,不重新load数据 - dtmsvr.MainStart() - wait() - } - // 下面都是运行示例,因此首先把服务器的数据重新准备好 - dtmsvr.PopulateMysql(true) - dtmsvr.MainStart() - if len(os.Args) == 1 { // 默认没有参数的情况下,准备好数据并启动dtmsvr即可 + onlyServer := len(os.Args) > 1 && os.Args[1] == "dtmsvr" + if !onlyServer { // 实际线上运行,只启动dtmsvr,不准备table相关的数据 + dtmsvr.PopulateMysql(true) + } + dtmsvr.StartSvr() // 启动dtmsvr的api服务 + go dtmsvr.CronExpiredTrans(-1) // 启动dtmsvr的定时过期查询 + + if onlyServer || len(os.Args) == 1 { // 没有参数,或者参数为dtmsvr,则不运行例子 wait() } + // quick_start 比较独立,单独作为一个例子运行,方便新人上手 if len(os.Args) > 1 && (os.Args[1] == "quick_start" || os.Args[1] == "qs") { examples.QsStartSvr() diff --git a/dtmsvr/cron.go b/dtmsvr/cron.go index 4318102..3b18ce9 100644 --- a/dtmsvr/cron.go +++ b/dtmsvr/cron.go @@ -26,8 +26,8 @@ func CronTransOnce(expireIn time.Duration) bool { // CronExpiredTrans cron expired trans, num == -1 indicate for ever func CronExpiredTrans(num int) { for i := 0; i < num || num == -1; i++ { - notEmpty := CronTransOnce(time.Duration(0)) - if !notEmpty { + hasTrans := CronTransOnce(time.Duration(0)) + if !hasTrans && num != 1 { sleepCronTime() } } @@ -60,5 +60,6 @@ func handlePanic() { func sleepCronTime() { delta := math.Min(3, float64(config.TransCronInterval)) interval := time.Duration((float64(config.TransCronInterval) - rand.Float64()*delta) * float64(time.Second)) + logrus.Printf("sleeping for %v", interval) time.Sleep(interval) } diff --git a/dtmsvr/dtmsvr_test.go b/dtmsvr/dtmsvr_test.go index 26da56c..a5d569b 100644 --- a/dtmsvr/dtmsvr_test.go +++ b/dtmsvr/dtmsvr_test.go @@ -41,8 +41,10 @@ func TestCover(t *testing.T) { db := dbGet() db.NoMust() CronTransOnce(0) - defer handlePanic() - checkAffected(db.DB) + err := common.CatchP(func() { + checkAffected(db.DB) + }) + assert.Error(t, err) CronExpiredTrans(1) go sleepCronTime() diff --git a/dtmsvr/main.go b/dtmsvr/main.go index 685096f..1aefe42 100644 --- a/dtmsvr/main.go +++ b/dtmsvr/main.go @@ -11,12 +11,6 @@ import ( var dtmsvrPort = 8080 -// MainStart main -func MainStart() { - StartSvr() - go CronExpiredTrans(-1) -} - // StartSvr StartSvr func StartSvr() { logrus.Printf("start dtmsvr")