Skip to content

Commit

Permalink
Fix unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yzang2019 committed Dec 7, 2023
1 parent 27a5905 commit 22347c6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
28 changes: 15 additions & 13 deletions sc/memiavl/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,48 +85,50 @@ func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (*DB, error
var (
err error
fileLock FileLock
dir = opts.Dir
)

if err := opts.Validate(); err != nil {
return nil, fmt.Errorf("invalid commit store options: %w", err)
}
opts.FillDefaults()

if err := createDBIfNotExist(dir, opts.InitialVersion); err != nil {
return nil, fmt.Errorf("fail to load db: %w", err)
if opts.CreateIfMissing {
if err := createDBIfNotExist(opts.Dir, opts.InitialVersion); err != nil {
return nil, fmt.Errorf("fail to load db: %w", err)
}
}

if !opts.ReadOnly {
fileLock, err = LockFile(filepath.Join(dir, LockFileName))
fileLock, err = LockFile(filepath.Join(opts.Dir, LockFileName))
if err != nil {
return nil, fmt.Errorf("fail to lock db: %w", err)
}

// cleanup any temporary directories left by interrupted snapshot rewrite
if err := removeTmpDirs(dir); err != nil {
fmt.Println(opts.Dir)
if err := removeTmpDirs(opts.Dir); err != nil {
return nil, fmt.Errorf("fail to cleanup tmp directories: %w", err)
}
}

snapshot := "current"
if targetVersion > 0 {
// find the biggest snapshot version that's less than or equal to the target version
snapshotVersion, err := seekSnapshot(dir, targetVersion)
snapshotVersion, err := seekSnapshot(opts.Dir, targetVersion)
if err != nil {
return nil, fmt.Errorf("fail to seek snapshot: %w", err)
}
snapshot = snapshotName(snapshotVersion)
}

path := filepath.Join(dir, snapshot)
path := filepath.Join(opts.Dir, snapshot)
mtree, err := LoadMultiTree(path, opts.ZeroCopy, opts.CacheSize)
if err != nil {
return nil, err
}

// Create rlog manager and open the rlog file
streamHandler, err := changelog.NewStream(logger, utils.GetChangelogPath(dir), changelog.Config{
streamHandler, err := changelog.NewStream(logger, utils.GetChangelogPath(opts.Dir), changelog.Config{
DisableFsync: true,
ZeroCopy: true,
WriteBufferSize: opts.AsyncCommitBuffer,
Expand All @@ -142,15 +144,15 @@ func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (*DB, error
}

if opts.LoadForOverwriting && targetVersion > 0 {
currentSnapshot, err := os.Readlink(currentPath(dir))
currentSnapshot, err := os.Readlink(currentPath(opts.Dir))
if err != nil {
return nil, fmt.Errorf("fail to read current version: %w", err)
}

if snapshot != currentSnapshot {
// downgrade `"current"` link first
logger.Info("downgrade current link to %s", snapshot)
if err := updateCurrentSymlink(dir, snapshot); err != nil {
if err := updateCurrentSymlink(opts.Dir, snapshot); err != nil {
return nil, fmt.Errorf("fail to update current snapshot link: %w", err)
}
}
Expand All @@ -163,12 +165,12 @@ func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (*DB, error
}

// prune snapshots that's larger than the target version
if err := traverseSnapshots(dir, false, func(version int64) (bool, error) {
if err := traverseSnapshots(opts.Dir, false, func(version int64) (bool, error) {
if version <= targetVersion {
return true, nil
}

if err := atomicRemoveDir(filepath.Join(dir, snapshotName(version))); err != nil {
if err := atomicRemoveDir(filepath.Join(opts.Dir, snapshotName(version))); err != nil {
logger.Error("fail to prune snapshot, version: %d", version)
} else {
logger.Info("prune snapshot, version: %d", version)
Expand All @@ -184,7 +186,7 @@ func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (*DB, error
db := &DB{
MultiTree: *mtree,
logger: logger,
dir: dir,
dir: opts.Dir,
fileLock: fileLock,
readOnly: opts.ReadOnly,
streamHandler: streamHandler,
Expand Down
4 changes: 3 additions & 1 deletion sc/memiavl/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ func TestRemoveSnapshotDir(t *testing.T) {
_, err = os.Stat(tmpDir)
require.False(t, os.IsNotExist(err))

db, err = OpenDB(logger.NewNopLogger(), 0, Options{})
db, err = OpenDB(logger.NewNopLogger(), 0, Options{
Dir: dbDir,
})
require.NoError(t, err)

_, err = os.Stat(tmpDir)
Expand Down

0 comments on commit 22347c6

Please sign in to comment.