Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7332bfd

Browse files
Fixed gc
1 parent 2a177c4 commit 7332bfd

File tree

3 files changed

+31
-25
lines changed

3 files changed

+31
-25
lines changed

‎README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@ func main() {
2424
manager := manage.NewDefaultManager()
2525

2626
// use mysql token store
27-
store := mysql.NewStore(
27+
store := mysql.NewDefaultStore(
2828
mysql.NewConfig("root:123456@tcp(127.0.0.1:3306)/myapp_test?charset=utf8"),
29-
"",
30-
0,
3129
)
3230

3331
defer store.Close()

‎mysql.go

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ type Config struct {
4141
MaxIdleConns int
4242
}
4343

44+
// NewDefaultStore create mysql store instance
45+
func NewDefaultStore(config *Config) *Store {
46+
return NewStore(config, "", 0)
47+
}
48+
4449
// NewStore create mysql store instance,
4550
// config mysql configuration,
4651
// tableName table name (default oauth2_token),
@@ -114,27 +119,33 @@ func (s *Store) Close() {
114119
s.db.Db.Close()
115120
}
116121

117-
func (s *Store) errorf(format string, args ...interface{}) {
118-
if s.stdout != nil {
119-
buf := fmt.Sprintf(format, args...)
120-
s.stdout.Write([]byte(buf))
122+
func (s *Store) gc() {
123+
for range s.ticker.C {
124+
s.clean()
121125
}
122126
}
123127

124-
func (s *Store) gc() {
125-
forranges.ticker.C {
126-
now := time.Now().Unix()
127-
query:= fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE expired_at<=?", s.tableName)
128-
n, err :=s.db.SelectInt(query, now)
128+
func (s *Store) clean() {
129+
now:=time.Now().Unix()
130+
query := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE expired_at<=? OR (code='' AND access='' AND refresh='')", s.tableName)
131+
n, err:= s.db.SelectInt(query, now)
132+
if err !=nil||n==0 {
129133
if err != nil {
130-
s.errorf("[ERROR]:%s", err.Error())
131-
return
132-
} else if n > 0 {
133-
_, err = s.db.Exec(fmt.Sprintf("DELETE FROM %s WHERE expired_at<=?", s.tableName), now)
134-
if err != nil {
135-
s.errorf("[ERROR]:%s", err.Error())
136-
}
134+
s.errorf(err.Error())
137135
}
136+
return
137+
}
138+
139+
_, err = s.db.Exec(fmt.Sprintf("DELETE FROM %s WHERE expired_at<=? OR (code='' AND access='' AND refresh='')", s.tableName), now)
140+
if err != nil {
141+
s.errorf(err.Error())
142+
}
143+
}
144+
145+
func (s *Store) errorf(format string, args ...interface{}) {
146+
if s.stdout != nil {
147+
buf := fmt.Sprintf("[OAUTH2-MYSQL-ERROR]: "+format, args...)
148+
s.stdout.Write([]byte(buf))
138149
}
139150
}
140151

‎mysql_test.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,18 @@ import (
66

77
"gopkg.in/oauth2.v3/models"
88

9-
. "github.com/smartystreets/goconvey/convey"
10-
119
_ "github.com/go-sql-driver/mysql"
10+
. "github.com/smartystreets/goconvey/convey"
1211
)
1312

1413
const (
1514
dsn = "root:@tcp(127.0.0.1:3306)/myapp_test?charset=utf8"
1615
)
1716

1817
func TestTokenStore(t *testing.T) {
19-
// wait gc
20-
defer time.Sleep(time.Second * 2)
21-
2218
Convey("Test mysql token store", t, func() {
23-
store := NewStore(NewConfig(dsn), "", 1)
19+
store := NewDefaultStore(NewConfig(dsn))
20+
defer store.clean()
2421

2522
Convey("Test authorization code store", func() {
2623
info := &models.Token{

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /