diff --git a/graph/bolt/bolt_test.go b/graph/bolt/bolt_test.go index b02a8bd..760d39e 100644 --- a/graph/bolt/bolt_test.go +++ b/graph/bolt/bolt_test.go @@ -104,7 +104,7 @@ func TestCreateDatabase(t *testing.T) { qs, err := newQuadStore(tmpFile.Name(), nil) if qs == nil || err != nil { - t.Error("Failed to create leveldb QuadStore.") + t.Error("Failed to create bolt QuadStore.") } if s := qs.Size(); s != 0 { t.Errorf("Unexpected size, got:%d expected:0", s) @@ -167,7 +167,7 @@ func TestLoadDatabase(t *testing.T) { ts2, didConvert := qs.(*QuadStore) if !didConvert { - t.Errorf("Could not convert from generic to LevelDB QuadStore") + t.Errorf("Could not convert from generic to Bolt QuadStore") } //Test horizon @@ -219,7 +219,7 @@ func TestIterator(t *testing.T) { qs, err := newQuadStore(tmpFile.Name(), nil) if qs == nil || err != nil { - t.Error("Failed to create leveldb QuadStore.") + t.Error("Failed to create bolt QuadStore.") } w, _ := writer.NewSingleReplication(qs, nil) @@ -313,7 +313,7 @@ func TestSetIterator(t *testing.T) { qs, err := newQuadStore(tmpFile.Name(), nil) if qs == nil || err != nil { - t.Error("Failed to create leveldb QuadStore.") + t.Error("Failed to create bolt QuadStore.") } defer qs.Close() @@ -428,7 +428,7 @@ func TestOptimize(t *testing.T) { } qs, err := newQuadStore(tmpFile.Name(), nil) if qs == nil || err != nil { - t.Error("Failed to create leveldb QuadStore.") + t.Error("Failed to create bolt QuadStore.") } w, _ := writer.NewSingleReplication(qs, nil) @@ -478,7 +478,7 @@ func TestDeletedFromIterator(t *testing.T) { qs, err := newQuadStore(tmpFile.Name(), nil) if qs == nil || err != nil { - t.Error("Failed to create leveldb QuadStore.") + t.Error("Failed to create bolt QuadStore.") } defer qs.Close() diff --git a/graph/bolt/quadstore.go b/graph/bolt/quadstore.go index efc8ecb..130be3b 100644 --- a/graph/bolt/quadstore.go +++ b/graph/bolt/quadstore.go @@ -360,12 +360,14 @@ func (qs *QuadStore) UpdateValueKeyBy(name string, amount int64, tx *bolt.Tx) er if data != nil { // Node exists in the database -- unmarshal and update. - err := value.Unmarshal(data) + var oldvalue proto.NodeData + err := oldvalue.Unmarshal(data) if err != nil { glog.Errorf("Error: couldn't reconstruct value: %v", err) return err } - value.Size_ += amount + oldvalue.Size_ += amount + value = oldvalue } // Are we deleting something? @@ -495,7 +497,7 @@ func (qs *QuadStore) NameOf(k graph.Value) string { func (qs *QuadStore) SizeOf(k graph.Value) int64 { if k == nil { - return 0 + return -1 } return int64(qs.valueData(k.(*Token)).Size_) } diff --git a/graph/gaedatastore/quadstore.go b/graph/gaedatastore/quadstore.go index 8a7b12d..35599e5 100644 --- a/graph/gaedatastore/quadstore.go +++ b/graph/gaedatastore/quadstore.go @@ -25,9 +25,10 @@ import ( "net/http" "sync" + "github.com/barakmich/glog" + "appengine" "appengine/datastore" - "github.com/barakmich/glog" "github.com/google/cayley/graph" "github.com/google/cayley/graph/iterator" @@ -86,7 +87,13 @@ type LogEntry struct { } func init() { - graph.RegisterQuadStore("gaedatastore", true, newQuadStore, initQuadStore, newQuadStoreForRequest) + graph.RegisterQuadStore("gaedatastore", graph.QuadStoreRegistration{ + NewFunc: newQuadStore, + NewForRequestFunc: newQuadStoreForRequest, + UpgradeFunc: nil, + InitFunc: initQuadStore, + IsPersistent: true, + }) } func initQuadStore(_ string, _ graph.Options) error {