diff --git a/bitcask.go b/bitcask.go index b0faed5..ef21fef 100644 --- a/bitcask.go +++ b/bitcask.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/derekparker/trie" "github.com/gofrs/flock" + "github.com/prologic/trie" ) var ( diff --git a/datafile.go b/datafile.go index 5d3440d..8139708 100644 --- a/datafile.go +++ b/datafile.go @@ -96,6 +96,8 @@ func (df *Datafile) Sync() error { } func (df *Datafile) Size() (int64, error) { + df.RLock() + defer df.RUnlock() return df.offset, nil } @@ -123,13 +125,13 @@ func (df *Datafile) Write(e pb.Entry) (int64, error) { return -1, ErrReadonly } + df.Lock() + defer df.Unlock() + e.Index = df.offset e.Timestamp = time.Now().Unix() - df.Lock() n, err := df.enc.Encode(&e) - df.Unlock() - if err != nil { return -1, err } diff --git a/go.mod b/go.mod index cb65039..9dad8bf 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/mitchellh/go-homedir v1.1.0 github.com/pkg/errors v0.8.1 github.com/prologic/msgbus v0.1.1 + github.com/prologic/trie v0.0.0-20190316011403-395e39dac705 github.com/prometheus/client_golang v0.9.2 // indirect github.com/sirupsen/logrus v1.3.0 github.com/spf13/cobra v0.0.3 diff --git a/go.sum b/go.sum index 3248a97..87a050f 100644 --- a/go.sum +++ b/go.sum @@ -42,6 +42,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prologic/msgbus v0.1.1/go.mod h1:B3Qu4/U2FP08x93jUzp9E8bl155+cIgDH2DUGRK6OZk= +github.com/prologic/trie v0.0.0-20190316011403-395e39dac705 h1:2J+cSlAeECj0lfMKSmM7n5OlIio+yLovaKLZJzwLc6U= +github.com/prologic/trie v0.0.0-20190316011403-395e39dac705/go.mod h1:LFuDmpHJGmciXd8Rl5YMhVlLMps9gz2GtYLzwxrFhzs= github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=