|
@ -24,7 +24,7 @@ func init() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
type EtcdStore struct { |
|
|
type EtcdStore struct { |
|
|
client *clientv3.Client |
|
|
|
|
|
|
|
|
client *clientv3.Client |
|
|
etcdKeyPrefix string |
|
|
etcdKeyPrefix string |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -38,9 +38,9 @@ func (store *EtcdStore) Initialize(configuration weed_util.Configuration, prefix |
|
|
servers = "localhost:2379" |
|
|
servers = "localhost:2379" |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
username := configuration.GetString(prefix + "username") |
|
|
|
|
|
password := configuration.GetString(prefix + "password") |
|
|
|
|
|
store.etcdKeyPrefix = configuration.GetString(prefix + "key_prefix") |
|
|
|
|
|
|
|
|
username := configuration.GetString(prefix + "username") |
|
|
|
|
|
password := configuration.GetString(prefix + "password") |
|
|
|
|
|
store.etcdKeyPrefix = configuration.GetString(prefix + "key_prefix") |
|
|
|
|
|
|
|
|
timeout := configuration.GetString(prefix + "timeout") |
|
|
timeout := configuration.GetString(prefix + "timeout") |
|
|
if timeout == "" { |
|
|
if timeout == "" { |
|
@ -93,7 +93,7 @@ func (store *EtcdStore) InsertEntry(ctx context.Context, entry *filer.Entry) (er |
|
|
meta = weed_util.MaybeGzipData(meta) |
|
|
meta = weed_util.MaybeGzipData(meta) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if _, err := store.client.Put(ctx, store.etcdKeyPrefix + string(key), string(meta)); err != nil { |
|
|
|
|
|
|
|
|
if _, err := store.client.Put(ctx, store.etcdKeyPrefix+string(key), string(meta)); err != nil { |
|
|
return fmt.Errorf("persisting %s : %v", entry.FullPath, err) |
|
|
return fmt.Errorf("persisting %s : %v", entry.FullPath, err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -107,7 +107,7 @@ func (store *EtcdStore) UpdateEntry(ctx context.Context, entry *filer.Entry) (er |
|
|
func (store *EtcdStore) FindEntry(ctx context.Context, fullpath weed_util.FullPath) (entry *filer.Entry, err error) { |
|
|
func (store *EtcdStore) FindEntry(ctx context.Context, fullpath weed_util.FullPath) (entry *filer.Entry, err error) { |
|
|
key := genKey(fullpath.DirAndName()) |
|
|
key := genKey(fullpath.DirAndName()) |
|
|
|
|
|
|
|
|
resp, err := store.client.Get(ctx, store.etcdKeyPrefix + string(key)) |
|
|
|
|
|
|
|
|
resp, err := store.client.Get(ctx, store.etcdKeyPrefix+string(key)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
return nil, fmt.Errorf("get %s : %v", fullpath, err) |
|
|
return nil, fmt.Errorf("get %s : %v", fullpath, err) |
|
|
} |
|
|
} |
|
@ -130,7 +130,7 @@ func (store *EtcdStore) FindEntry(ctx context.Context, fullpath weed_util.FullPa |
|
|
func (store *EtcdStore) DeleteEntry(ctx context.Context, fullpath weed_util.FullPath) (err error) { |
|
|
func (store *EtcdStore) DeleteEntry(ctx context.Context, fullpath weed_util.FullPath) (err error) { |
|
|
key := genKey(fullpath.DirAndName()) |
|
|
key := genKey(fullpath.DirAndName()) |
|
|
|
|
|
|
|
|
if _, err := store.client.Delete(ctx, store.etcdKeyPrefix + string(key)); err != nil { |
|
|
|
|
|
|
|
|
if _, err := store.client.Delete(ctx, store.etcdKeyPrefix+string(key)); err != nil { |
|
|
return fmt.Errorf("delete %s : %v", fullpath, err) |
|
|
return fmt.Errorf("delete %s : %v", fullpath, err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -140,7 +140,7 @@ func (store *EtcdStore) DeleteEntry(ctx context.Context, fullpath weed_util.Full |
|
|
func (store *EtcdStore) DeleteFolderChildren(ctx context.Context, fullpath weed_util.FullPath) (err error) { |
|
|
func (store *EtcdStore) DeleteFolderChildren(ctx context.Context, fullpath weed_util.FullPath) (err error) { |
|
|
directoryPrefix := genDirectoryKeyPrefix(fullpath, "") |
|
|
directoryPrefix := genDirectoryKeyPrefix(fullpath, "") |
|
|
|
|
|
|
|
|
if _, err := store.client.Delete(ctx, store.etcdKeyPrefix + string(directoryPrefix), clientv3.WithPrefix()); err != nil { |
|
|
|
|
|
|
|
|
if _, err := store.client.Delete(ctx, store.etcdKeyPrefix+string(directoryPrefix), clientv3.WithPrefix()); err != nil { |
|
|
return fmt.Errorf("deleteFolderChildren %s : %v", fullpath, err) |
|
|
return fmt.Errorf("deleteFolderChildren %s : %v", fullpath, err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -158,7 +158,7 @@ func (store *EtcdStore) ListDirectoryEntries(ctx context.Context, dirPath weed_u |
|
|
lastFileStart = genDirectoryKeyPrefix(dirPath, startFileName) |
|
|
lastFileStart = genDirectoryKeyPrefix(dirPath, startFileName) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
resp, err := store.client.Get(ctx, store.etcdKeyPrefix + string(lastFileStart), |
|
|
|
|
|
|
|
|
resp, err := store.client.Get(ctx, store.etcdKeyPrefix+string(lastFileStart), |
|
|
clientv3.WithFromKey(), clientv3.WithLimit(limit+1)) |
|
|
clientv3.WithFromKey(), clientv3.WithLimit(limit+1)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
return lastFileName, fmt.Errorf("list %s : %v", dirPath, err) |
|
|
return lastFileName, fmt.Errorf("list %s : %v", dirPath, err) |
|
|