|
|
@ -3,11 +3,11 @@ package redis3 |
|
|
|
import ( |
|
|
|
"context" |
|
|
|
"fmt" |
|
|
|
"github.com/go-redsync/redsync/v4" |
|
|
|
"time" |
|
|
|
|
|
|
|
"github.com/go-redis/redis/v8" |
|
|
|
|
|
|
|
redsync "github.com/go-redsync/redsync/v4" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/filer" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/glog" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" |
|
|
@ -35,6 +35,22 @@ func (store *UniversalRedis3Store) RollbackTransaction(ctx context.Context) erro |
|
|
|
|
|
|
|
func (store *UniversalRedis3Store) InsertEntry(ctx context.Context, entry *filer.Entry) (err error) { |
|
|
|
|
|
|
|
if err = store.doInsertEntry(ctx, entry); err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
dir, name := entry.FullPath.DirAndName() |
|
|
|
|
|
|
|
if name != "" { |
|
|
|
if err = insertChild(ctx, store, genDirectoryListKey(dir), name); err != nil { |
|
|
|
return fmt.Errorf("persisting %s in parent dir: %v", entry.FullPath, err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func (store *UniversalRedis3Store) doInsertEntry(ctx context.Context, entry *filer.Entry) error { |
|
|
|
value, err := entry.EncodeAttributesAndChunks() |
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("encoding %s %+v: %v", entry.FullPath, entry.Attr, err) |
|
|
@ -47,21 +63,12 @@ func (store *UniversalRedis3Store) InsertEntry(ctx context.Context, entry *filer |
|
|
|
if err = store.Client.Set(ctx, string(entry.FullPath), value, time.Duration(entry.TtlSec)*time.Second).Err(); err != nil { |
|
|
|
return fmt.Errorf("persisting %s : %v", entry.FullPath, err) |
|
|
|
} |
|
|
|
|
|
|
|
dir, name := entry.FullPath.DirAndName() |
|
|
|
|
|
|
|
if name != "" { |
|
|
|
if err = insertChild(ctx, store, genDirectoryListKey(dir), name); err != nil { |
|
|
|
return fmt.Errorf("persisting %s in parent dir: %v", entry.FullPath, err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func (store *UniversalRedis3Store) UpdateEntry(ctx context.Context, entry *filer.Entry) (err error) { |
|
|
|
|
|
|
|
return store.InsertEntry(ctx, entry) |
|
|
|
return store.doInsertEntry(ctx, entry) |
|
|
|
} |
|
|
|
|
|
|
|
func (store *UniversalRedis3Store) FindEntry(ctx context.Context, fullpath util.FullPath) (entry *filer.Entry, err error) { |
|
|
|