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
|
||||
curr *internal.Datafile
|
||||
keydir *internal.Keydir
|
||||
datafiles []*internal.Datafile
|
||||
datafiles map[int]*internal.Datafile
|
||||
trie *trie.Trie
|
||||
}
|
||||
|
||||
@ -220,14 +220,16 @@ func (b *Bitcask) put(key string, value []byte) (int64, int64, error) {
|
||||
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 {
|
||||
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)
|
||||
if err != nil {
|
||||
return -1, 0, err
|
||||
@ -253,14 +255,14 @@ func (b *Bitcask) reopen() error {
|
||||
return err
|
||||
}
|
||||
|
||||
var datafiles []*internal.Datafile
|
||||
datafiles := make(map[int]*internal.Datafile, len(ids))
|
||||
|
||||
for _, id := range ids {
|
||||
df, err := internal.NewDatafile(b.path, id, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
datafiles = append(datafiles, df)
|
||||
datafiles[id] = df
|
||||
}
|
||||
|
||||
keydir := internal.NewKeydir()
|
||||
|
Loading…
x
Reference in New Issue
Block a user