diff --git a/README.md b/README.md index 37df3fd..a66aee9 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,7 @@ An in-process, in-memory database for Go. ## TO DO -* [ ] wal: delete old entries -* [ ] wal: shipping_test: secondary too far behind -* [ ] wal: writer_test: call RecvWAL twice -* [ ] wal: writer_test double start / stop * [ ] kvstore: tests -* [ ] wal: writer lock via flock? ## Structure diff --git a/kvstore/store.go b/kvstore/store.go index 02a09aa..81a22be 100644 --- a/kvstore/store.go +++ b/kvstore/store.go @@ -4,12 +4,10 @@ import ( "database/sql" "fmt" "net" - "os" "sync" "time" - "git.crumpington.com/private/mdb/wal" - "golang.org/x/sys/unix" + "git.crumpington.com/private/mdb/kvstore/wal" _ "github.com/mattn/go-sqlite3" ) @@ -20,10 +18,9 @@ type KV struct { dataPath string walPath string - w *wal.Writer - f *wal.Follower - lock *os.File - db *sql.DB + w *wal.Writer + f *wal.Follower + db *sql.DB stop chan struct{} done sync.WaitGroup @@ -36,13 +33,6 @@ type KV struct { } func (kv *KV) init() { - // Acquire the lock. - lock, err := os.OpenFile(kv.lockPath, os.O_RDWR|os.O_CREATE, 0600) - must(err) - must(unix.Flock(int(lock.Fd()), unix.LOCK_EX)) - - kv.lock = lock - opts := `?_journal=WAL` db, err := sql.Open("sqlite3", kv.dataPath+opts) must(err) @@ -71,7 +61,6 @@ func (kv *KV) start() { func NewPrimary(dir string) *KV { kv := &KV{ primary: true, - lockPath: lockPath(dir), dataPath: dataPath(dir), walPath: walPath(dir), } @@ -87,7 +76,6 @@ func NewSecondary( ) *KV { kv := &KV{ primary: false, - lockPath: lockPath(dir), dataPath: dataPath(dir), walPath: walPath(dir), } @@ -145,12 +133,10 @@ func (kv *KV) Close() { kv.w.Close() kv.f.Close() kv.db.Close() - kv.lock.Close() kv.w = nil kv.f = nil kv.db = nil - kv.lock = nil } func (kv *KV) Store(collection string, id uint64, data []byte) { diff --git a/kvstore/util.go b/kvstore/util.go index 8b2e088..d356312 100644 --- a/kvstore/util.go +++ b/kvstore/util.go @@ -24,7 +24,3 @@ func dataPath(dir string) string { func walPath(dir string) string { return filepath.Join(dir, "wal") } - -func lockPath(dir string) string { - return filepath.Join(dir, "lock") -} diff --git a/wal/db-sql.go b/kvstore/wal/db-sql.go similarity index 100% rename from wal/db-sql.go rename to kvstore/wal/db-sql.go diff --git a/wal/dep-graph.sh b/kvstore/wal/dep-graph.sh similarity index 100% rename from wal/dep-graph.sh rename to kvstore/wal/dep-graph.sh diff --git a/wal/follower.go b/kvstore/wal/follower.go similarity index 100% rename from wal/follower.go rename to kvstore/wal/follower.go diff --git a/wal/follower_test.go b/kvstore/wal/follower_test.go similarity index 100% rename from wal/follower_test.go rename to kvstore/wal/follower_test.go diff --git a/wal/global.go b/kvstore/wal/global.go similarity index 100% rename from wal/global.go rename to kvstore/wal/global.go diff --git a/wal/init.go b/kvstore/wal/init.go similarity index 100% rename from wal/init.go rename to kvstore/wal/init.go diff --git a/wal/shipping.go b/kvstore/wal/shipping.go similarity index 100% rename from wal/shipping.go rename to kvstore/wal/shipping.go diff --git a/wal/shipping_test.go b/kvstore/wal/shipping_test.go similarity index 100% rename from wal/shipping_test.go rename to kvstore/wal/shipping_test.go diff --git a/wal/util.go b/kvstore/wal/util.go similarity index 100% rename from wal/util.go rename to kvstore/wal/util.go diff --git a/wal/util_test.go b/kvstore/wal/util_test.go similarity index 100% rename from wal/util_test.go rename to kvstore/wal/util_test.go diff --git a/wal/writer-background.go b/kvstore/wal/writer-background.go similarity index 100% rename from wal/writer-background.go rename to kvstore/wal/writer-background.go diff --git a/wal/writer.go b/kvstore/wal/writer.go similarity index 100% rename from wal/writer.go rename to kvstore/wal/writer.go diff --git a/wal/writer_test.go b/kvstore/wal/writer_test.go similarity index 100% rename from wal/writer_test.go rename to kvstore/wal/writer_test.go