mirror of
https://github.com/taigrr/bitcask
synced 2025-01-18 04:03:17 -08:00
Fixed an off-by-one bug with managing datafiles (#31)
This commit is contained in:
parent
bc782a3083
commit
912371645d
14
bitcask.go
14
bitcask.go
@ -50,7 +50,7 @@ type Bitcask struct {
|
|||||||
path string
|
path string
|
||||||
curr *internal.Datafile
|
curr *internal.Datafile
|
||||||
keydir *internal.Keydir
|
keydir *internal.Keydir
|
||||||
datafiles []*internal.Datafile
|
datafiles map[int]*internal.Datafile
|
||||||
trie *trie.Trie
|
trie *trie.Trie
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,14 +220,16 @@ func (b *Bitcask) put(key string, value []byte) (int64, int64, error) {
|
|||||||
return -1, 0, err
|
return -1, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
df, err := internal.NewDatafile(b.path, b.curr.FileID(), true)
|
id := b.curr.FileID()
|
||||||
|
|
||||||
|
df, err := internal.NewDatafile(b.path, id, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return -1, 0, err
|
return -1, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
b.datafiles = append(b.datafiles, df)
|
b.datafiles[id] = df
|
||||||
|
|
||||||
id := b.curr.FileID() + 1
|
id = b.curr.FileID() + 1
|
||||||
curr, err := internal.NewDatafile(b.path, id, false)
|
curr, err := internal.NewDatafile(b.path, id, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return -1, 0, err
|
return -1, 0, err
|
||||||
@ -253,14 +255,14 @@ func (b *Bitcask) reopen() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var datafiles []*internal.Datafile
|
datafiles := make(map[int]*internal.Datafile, len(ids))
|
||||||
|
|
||||||
for _, id := range ids {
|
for _, id := range ids {
|
||||||
df, err := internal.NewDatafile(b.path, id, true)
|
df, err := internal.NewDatafile(b.path, id, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
datafiles = append(datafiles, df)
|
datafiles[id] = df
|
||||||
}
|
}
|
||||||
|
|
||||||
keydir := internal.NewKeydir()
|
keydir := internal.NewKeydir()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user