chore(storage): storage performance issues (#500)
* chore(storage): storage performance issues 1. close storage connection before shutdown the service 2. update windows image https://github.com/appleboy/gorush/issues/393 Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
This commit is contained in:
@@ -19,11 +19,23 @@ func New(config config.ConfYaml) *Storage {
|
||||
// Storage is interface structure
|
||||
type Storage struct {
|
||||
config config.ConfYaml
|
||||
db *storm.DB
|
||||
}
|
||||
|
||||
// Init client storage.
|
||||
func (s *Storage) Init() error {
|
||||
return nil
|
||||
var err error
|
||||
s.db, err = storm.Open(s.config.Stat.BoltDB.Path)
|
||||
return err
|
||||
}
|
||||
|
||||
// Close the storage connection
|
||||
func (s *Storage) Close() error {
|
||||
if s.db == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return s.db.Close()
|
||||
}
|
||||
|
||||
// Reset Client storage.
|
||||
@@ -36,33 +48,17 @@ func (s *Storage) Reset() {
|
||||
}
|
||||
|
||||
func (s *Storage) setBoltDB(key string, count int64) {
|
||||
db, _ := storm.Open(s.config.Stat.BoltDB.Path)
|
||||
err := db.Set(s.config.Stat.BoltDB.Bucket, key, count)
|
||||
err := s.db.Set(s.config.Stat.BoltDB.Bucket, key, count)
|
||||
if err != nil {
|
||||
log.Println("BoltDB set error:", err.Error())
|
||||
}
|
||||
|
||||
defer func() {
|
||||
err := db.Close()
|
||||
if err != nil {
|
||||
log.Println("BoltDB error:", err.Error())
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (s *Storage) getBoltDB(key string, count *int64) {
|
||||
db, _ := storm.Open(s.config.Stat.BoltDB.Path)
|
||||
err := db.Get(s.config.Stat.BoltDB.Bucket, key, count)
|
||||
err := s.db.Get(s.config.Stat.BoltDB.Bucket, key, count)
|
||||
if err != nil {
|
||||
log.Println("BoltDB get error:", err.Error())
|
||||
}
|
||||
|
||||
defer func() {
|
||||
err := db.Close()
|
||||
if err != nil {
|
||||
log.Println("BoltDB error:", err.Error())
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// AddTotalCount record push notification count.
|
||||
|
||||
@@ -44,4 +44,6 @@ func TestBoltDBEngine(t *testing.T) {
|
||||
boltDB.Reset()
|
||||
val = boltDB.GetAndroidError()
|
||||
assert.Equal(t, int64(0), val)
|
||||
|
||||
assert.NoError(t, boltDB.Close())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user