add Store Close method (#1500)
* add Store Close method * Update sync store build failure
This commit is contained in:
parent
4cac7dcc48
commit
4b0e27413e
4
store/cache/cache.go
vendored
4
store/cache/cache.go
vendored
@ -23,6 +23,10 @@ func NewCache(stores ...store.Store) store.Store {
|
|||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *cache) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *cache) Init(...store.Option) error {
|
func (c *cache) Init(...store.Option) error {
|
||||||
if len(c.stores) < 2 {
|
if len(c.stores) < 2 {
|
||||||
return errors.New("cache requires at least 2 stores")
|
return errors.New("cache requires at least 2 stores")
|
||||||
|
@ -101,6 +101,10 @@ func validateOptions(account, token, namespace string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *workersKV) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (w *workersKV) Init(opts ...store.Option) error {
|
func (w *workersKV) Init(opts ...store.Option) error {
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&w.options)
|
o(&w.options)
|
||||||
|
@ -36,6 +36,13 @@ type sqlStore struct {
|
|||||||
options store.Options
|
options store.Options
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *sqlStore) Close() error {
|
||||||
|
if s.db != nil {
|
||||||
|
return s.db.Close()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *sqlStore) Init(opts ...store.Option) error {
|
func (s *sqlStore) Init(opts ...store.Option) error {
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&s.options)
|
o(&s.options)
|
||||||
|
@ -32,6 +32,10 @@ func NewStore(opts ...store.Option) store.Store {
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *etcdStore) Close() error {
|
||||||
|
return e.client.Close()
|
||||||
|
}
|
||||||
|
|
||||||
func (e *etcdStore) Init(opts ...store.Option) error {
|
func (e *etcdStore) Init(opts ...store.Option) error {
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&e.options)
|
o(&e.options)
|
||||||
|
@ -72,13 +72,13 @@ func (m *fileStore) init(opts ...store.Option) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a directory /tmp/micro
|
// create a directory /tmp/micro
|
||||||
dir := filepath.Join(DefaultDir, "micro")
|
dir := filepath.Join(DefaultDir, m.options.Database)
|
||||||
// create the database handle
|
// create the database handle
|
||||||
fname := m.options.Database + ".db"
|
fname := m.options.Table + ".db"
|
||||||
// Ignoring this as the folder might exist.
|
// Ignoring this as the folder might exist.
|
||||||
// Reads/Writes updates will return with sensible error messages
|
// Reads/Writes updates will return with sensible error messages
|
||||||
// about the dir not existing in case this cannot create the path anyway
|
// about the dir not existing in case this cannot create the path anyway
|
||||||
_ = os.Mkdir(dir, 0700)
|
os.MkdirAll(dir, 0700)
|
||||||
|
|
||||||
m.dir = dir
|
m.dir = dir
|
||||||
m.fileName = fname
|
m.fileName = fname
|
||||||
@ -223,6 +223,13 @@ func (m *fileStore) set(r *store.Record) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *fileStore) Close() error {
|
||||||
|
if m.db != nil {
|
||||||
|
return m.db.Close()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *fileStore) Init(opts ...store.Option) error {
|
func (m *fileStore) Init(opts ...store.Option) error {
|
||||||
return m.init(opts...)
|
return m.init(opts...)
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,15 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
func cleanup() {
|
func cleanup(db string, s store.Store) {
|
||||||
dir := filepath.Join(DefaultDir, "micro/")
|
s.Close()
|
||||||
|
dir := filepath.Join(DefaultDir, db + "/")
|
||||||
os.RemoveAll(dir)
|
os.RemoveAll(dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFileStoreReInit(t *testing.T) {
|
func TestFileStoreReInit(t *testing.T) {
|
||||||
defer cleanup()
|
|
||||||
s := NewStore(store.Table("aaa"))
|
s := NewStore(store.Table("aaa"))
|
||||||
|
defer cleanup(DefaultDatabase, s)
|
||||||
s.Init(store.Table("bbb"))
|
s.Init(store.Table("bbb"))
|
||||||
if s.Options().Table != "bbb" {
|
if s.Options().Table != "bbb" {
|
||||||
t.Error("Init didn't reinitialise the store")
|
t.Error("Init didn't reinitialise the store")
|
||||||
@ -28,26 +29,26 @@ func TestFileStoreReInit(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestFileStoreBasic(t *testing.T) {
|
func TestFileStoreBasic(t *testing.T) {
|
||||||
defer cleanup()
|
|
||||||
s := NewStore()
|
s := NewStore()
|
||||||
|
defer cleanup(DefaultDatabase, s)
|
||||||
fileTest(s, t)
|
fileTest(s, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFileStoreTable(t *testing.T) {
|
func TestFileStoreTable(t *testing.T) {
|
||||||
defer cleanup()
|
|
||||||
s := NewStore(store.Table("testTable"))
|
s := NewStore(store.Table("testTable"))
|
||||||
|
defer cleanup(DefaultDatabase, s)
|
||||||
fileTest(s, t)
|
fileTest(s, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFileStoreDatabase(t *testing.T) {
|
func TestFileStoreDatabase(t *testing.T) {
|
||||||
defer cleanup()
|
|
||||||
s := NewStore(store.Database("testdb"))
|
s := NewStore(store.Database("testdb"))
|
||||||
|
defer cleanup("testdb", s)
|
||||||
fileTest(s, t)
|
fileTest(s, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFileStoreDatabaseTable(t *testing.T) {
|
func TestFileStoreDatabaseTable(t *testing.T) {
|
||||||
defer cleanup()
|
|
||||||
s := NewStore(store.Table("testTable"), store.Database("testdb"))
|
s := NewStore(store.Table("testTable"), store.Database("testdb"))
|
||||||
|
defer cleanup("testdb", s)
|
||||||
fileTest(s, t)
|
fileTest(s, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,11 @@ type memoryStore struct {
|
|||||||
store *cache.Cache
|
store *cache.Cache
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *memoryStore) Close() error {
|
||||||
|
m.store.Flush()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *memoryStore) Init(opts ...store.Option) error {
|
func (m *memoryStore) Init(opts ...store.Option) error {
|
||||||
m.store.Flush()
|
m.store.Flush()
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
|
@ -29,3 +29,7 @@ func (n *noopStore) Delete(key string, opts ...DeleteOption) error {
|
|||||||
func (n *noopStore) List(opts ...ListOption) ([]string, error) {
|
func (n *noopStore) List(opts ...ListOption) ([]string, error) {
|
||||||
return []string{}, nil
|
return []string{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *noopStore) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -32,6 +32,10 @@ type serviceStore struct {
|
|||||||
Client pb.StoreService
|
Client pb.StoreService
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *serviceStore) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *serviceStore) Init(opts ...store.Option) error {
|
func (s *serviceStore) Init(opts ...store.Option) error {
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&s.options)
|
o(&s.options)
|
||||||
|
@ -28,6 +28,8 @@ type Store interface {
|
|||||||
Delete(key string, opts ...DeleteOption) error
|
Delete(key string, opts ...DeleteOption) error
|
||||||
// List returns any keys that match, or an empty list with no error if none matched.
|
// List returns any keys that match, or an empty list with no error if none matched.
|
||||||
List(opts ...ListOption) ([]string, error)
|
List(opts ...ListOption) ([]string, error)
|
||||||
|
// Close the store
|
||||||
|
Close() error
|
||||||
// String returns the name of the implementation.
|
// String returns the name of the implementation.
|
||||||
String() string
|
String() string
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,10 @@ func NewCache(opts ...Option) Cache {
|
|||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *cache) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Init initialises the storeOptions
|
// Init initialises the storeOptions
|
||||||
func (c *cache) Init(opts ...store.Option) error {
|
func (c *cache) Init(opts ...store.Option) error {
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
|
Loading…
Reference in New Issue
Block a user