Browse Source

cache metadata on startup

pull/1293/head
Chris Lu 5 years ago
parent
commit
a207285af7
  1. 5
      weed/filesys/meta_cache/meta_cache.go
  2. 14
      weed/filesys/meta_cache/meta_cache_init.go
  3. 2
      weed/filesys/wfs.go

5
weed/filesys/meta_cache/meta_cache.go

@ -20,10 +20,13 @@ func NewMetaCache(dbFolder string) *MetaCache {
func openMetaStore(dbFolder string) filer2.FilerStore {
os.RemoveAll(dbFolder)
os.MkdirAll(dbFolder, 0755)
store := &leveldb.LevelDBStore{}
config := &cacheConfig{}
config := &cacheConfig{
dir: dbFolder,
}
if err := store.Initialize(config, ""); err != nil {
glog.Fatalf("Failed to initialize metadata cache store for %s: %+v", store.GetName(), err)

14
weed/filesys/meta_cache/meta_cache_init.go

@ -1,10 +1,20 @@
package meta_cache
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/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
}

2
weed/filesys/wfs.go

@ -95,7 +95,7 @@ func NewSeaweedFileSystem(option *Option) *WFS {
}
if wfs.option.AsyncMetaDataCaching {
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)
} else {
go meta_cache.SubscribeMetaEvents(wfs.metaCache, wfs, wfs.option.FilerMountRootPath)

Loading…
Cancel
Save