Skip to content

Commit b9867a4

Browse files
committed
Optimize GC
1 parent 5dc62a6 commit b9867a4

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

mysql.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,16 @@ func NewStoreWithDB(db *sql.DB, tableName string, gcInterval int) *Store {
6161
db: &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{Encoding: "UTF8", Engine: "MyISAM"}},
6262
tableName: "oauth2_token",
6363
stdout: os.Stderr,
64-
interval: 600,
6564
}
6665
if tableName != "" {
6766
store.tableName = tableName
6867
}
6968

69+
interval := 600
7070
if gcInterval > 0 {
71-
store.interval = gcInterval
71+
interval = gcInterval
7272
}
73+
store.ticker = time.NewTicker(time.Second * time.Duration(interval))
7374

7475
table := store.db.AddTableWithName(StoreItem{}, store.tableName)
7576
table.AddIndex("idx_code", "Btree", []string{"code"})
@@ -89,10 +90,10 @@ func NewStoreWithDB(db *sql.DB, tableName string, gcInterval int) *Store {
8990

9091
// Store mysql token store
9192
type Store struct {
92-
interval int
9393
tableName string
9494
db *gorp.DbMap
9595
stdout io.Writer
96+
ticker *time.Ticker
9697
}
9798

9899
// SetStdout set error output
@@ -103,6 +104,7 @@ func (s *Store) SetStdout(stdout io.Writer) *Store {
103104

104105
// Close close the store
105106
func (s *Store) Close() {
107+
s.ticker.Stop()
106108
s.db.Db.Close()
107109
}
108110

@@ -114,8 +116,7 @@ func (s *Store) errorf(format string, args ...interface{}) {
114116
}
115117

116118
func (s *Store) gc() {
117-
ticker := time.NewTicker(time.Second * time.Duration(s.interval))
118-
for range ticker.C {
119+
for range s.ticker.C {
119120
now := time.Now().Unix()
120121
query := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE expired_at<=?", s.tableName)
121122
n, err := s.db.SelectInt(query, now)

0 commit comments

Comments
 (0)