cache metadata on startup
This commit is contained in:
@@ -20,10 +20,13 @@ func NewMetaCache(dbFolder string) *MetaCache {
|
|||||||
|
|
||||||
func openMetaStore(dbFolder string) filer2.FilerStore {
|
func openMetaStore(dbFolder string) filer2.FilerStore {
|
||||||
|
|
||||||
|
os.RemoveAll(dbFolder)
|
||||||
os.MkdirAll(dbFolder, 0755)
|
os.MkdirAll(dbFolder, 0755)
|
||||||
|
|
||||||
store := &leveldb.LevelDBStore{}
|
store := &leveldb.LevelDBStore{}
|
||||||
config := &cacheConfig{}
|
config := &cacheConfig{
|
||||||
|
dir: dbFolder,
|
||||||
|
}
|
||||||
|
|
||||||
if err := store.Initialize(config, ""); err != nil {
|
if err := store.Initialize(config, ""); err != nil {
|
||||||
glog.Fatalf("Failed to initialize metadata cache store for %s: %+v", store.GetName(), err)
|
glog.Fatalf("Failed to initialize metadata cache store for %s: %+v", store.GetName(), err)
|
||||||
|
|||||||
@@ -1,10 +1,20 @@
|
|||||||
package meta_cache
|
package meta_cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/filer2"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitMetaCache(mc *MetaCache, client filer_pb.FilerClient) error {
|
func InitMetaCache(mc *MetaCache, client filer_pb.FilerClient, path string) error {
|
||||||
|
filer_pb.TraverseBfs(client, util.FullPath(path), func(parentPath util.FullPath, pbEntry *filer_pb.Entry) {
|
||||||
|
entry := filer2.FromPbEntry(string(parentPath), pbEntry)
|
||||||
|
if err := mc.InsertEntry(context.Background(), entry); err != nil {
|
||||||
|
glog.V(0).Infof("read %s: %v", entry.FullPath, err)
|
||||||
|
}
|
||||||
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ func NewSeaweedFileSystem(option *Option) *WFS {
|
|||||||
}
|
}
|
||||||
if wfs.option.AsyncMetaDataCaching {
|
if wfs.option.AsyncMetaDataCaching {
|
||||||
wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.CacheDir, "meta"))
|
wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.CacheDir, "meta"))
|
||||||
if err := meta_cache.InitMetaCache(wfs.metaCache, wfs); err != nil{
|
if err := meta_cache.InitMetaCache(wfs.metaCache, wfs, wfs.option.FilerMountRootPath); err != nil{
|
||||||
glog.V(0).Infof("failed to init meta cache: %v", err)
|
glog.V(0).Infof("failed to init meta cache: %v", err)
|
||||||
} else {
|
} else {
|
||||||
go meta_cache.SubscribeMetaEvents(wfs.metaCache, wfs, wfs.option.FilerMountRootPath)
|
go meta_cache.SubscribeMetaEvents(wfs.metaCache, wfs, wfs.option.FilerMountRootPath)
|
||||||
|
|||||||
Reference in New Issue
Block a user