Commit 518e6750 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 9baafc82
...@@ -200,9 +200,9 @@ func (db *DB) watcher(watchq <-chan CommitEvent) { // XXX err ? ...@@ -200,9 +200,9 @@ func (db *DB) watcher(watchq <-chan CommitEvent) { // XXX err ?
} }
// forget older δtail entries // forget older δtail entries
fmt.Println() //fmt.Println()
fmt.Printf("%s\n", db.δtail.Head().Time().Time) //fmt.Printf("%s\n", db.δtail.Head().Time().Time)
fmt.Printf("%s\n", db.δtail.Head().Time().Add(-db.tδkeep)) //fmt.Printf("%s\n", db.δtail.Head().Time().Add(-db.tδkeep))
tcut := db.δtail.Head().Time().Add(-db.tδkeep) tcut := db.δtail.Head().Time().Add(-db.tδkeep)
δcut := TidFromTime(tcut) δcut := TidFromTime(tcut)
...@@ -294,7 +294,7 @@ func (db *DB) Open(ctx context.Context, opt *ConnOptions) (_ *Connection, err er ...@@ -294,7 +294,7 @@ func (db *DB) Open(ctx context.Context, opt *ConnOptions) (_ *Connection, err er
// must be called with db.mu locked. // must be called with db.mu locked.
// db.mu is unlocked on error. // db.mu is unlocked on error.
func (db *DB) openOrDBUnlock(ctx context.Context, at Tid, noPool bool) (*Connection, error) { func (db *DB) openOrDBUnlock(ctx context.Context, at Tid, noPool bool) (*Connection, error) {
fmt.Printf("db.openx %s %v\t; δtail (%s, %s]\n", at, noPool, db.δtail.Tail(), db.δtail.Head()) fmt.Printf("db.openx %s nopool=%v\t; δtail (%s, %s]\n", at, noPool, db.δtail.Tail(), db.δtail.Head())
// NoPool connection - create one anew // NoPool connection - create one anew
if noPool { if noPool {
// XXX wait for at to be covered // XXX wait for at to be covered
......
...@@ -191,7 +191,6 @@ func (cc *zcacheControl) WantEvict(obj IPersistent) bool { ...@@ -191,7 +191,6 @@ func (cc *zcacheControl) WantEvict(obj IPersistent) bool {
// XXX test for cache=y/n (raw data cache) // XXX test for cache=y/n (raw data cache)
// XXX test both txn.Abort() and conn.Resync() // XXX test both txn.Abort() and conn.Resync()
func TestPersistentDB(t *testing.T) { func TestPersistentDB(t *testing.T) {
println("111")
X := exc.Raiseif X := exc.Raiseif
assert := require.New(t) assert := require.New(t)
checkObj := tCheckObj(t) checkObj := tCheckObj(t)
...@@ -208,19 +207,14 @@ func TestPersistentDB(t *testing.T) { ...@@ -208,19 +207,14 @@ func TestPersistentDB(t *testing.T) {
_obj1 := NewMyObject(nil); _obj1.oid = 101; _obj1.value = "hello" _obj1 := NewMyObject(nil); _obj1.oid = 101; _obj1.value = "hello"
_obj2 := NewMyObject(nil); _obj2.oid = 102; _obj2.value = "world" _obj2 := NewMyObject(nil); _obj2.oid = 102; _obj2.value = "world"
at1, err := ZPyCommit(zurl, 0, _obj1, _obj2); X(err) at1, err := ZPyCommit(zurl, 0, _obj1, _obj2); X(err)
println("222")
// open connection to it via zodb/go // open connection to it via zodb/go
ctx := context.Background() ctx := context.Background()
stor, err := OpenStorage(ctx, zurl, &OpenOptions{ReadOnly: true}); X(err) stor, err := OpenStorage(ctx, zurl, &OpenOptions{ReadOnly: true}); X(err)
println("333")
db := NewDB(stor) db := NewDB(stor)
println("444")
txn1, ctx1 := transaction.New(ctx) txn1, ctx1 := transaction.New(ctx)
println("444b")
conn1, err := db.Open(ctx1, &ConnOptions{}); X(err) conn1, err := db.Open(ctx1, &ConnOptions{}); X(err)
println("555")
assert.Equal(conn1.At(), at1) assert.Equal(conn1.At(), at1)
assert.Equal(db.pool, []*Connection(nil)) assert.Equal(db.pool, []*Connection(nil))
assert.Equal(conn1.db, db) assert.Equal(conn1.db, db)
...@@ -240,7 +234,6 @@ func TestPersistentDB(t *testing.T) { ...@@ -240,7 +234,6 @@ func TestPersistentDB(t *testing.T) {
assert.Equal(ClassOf(xobj2), "t.zodb.MyObject") assert.Equal(ClassOf(xobj2), "t.zodb.MyObject")
// XXX objX -> c1objX // XXX objX -> c1objX
println("ZZZ")
obj1 := xobj1.(*MyObject) obj1 := xobj1.(*MyObject)
obj2 := xobj2.(*MyObject) obj2 := xobj2.(*MyObject)
...@@ -284,8 +277,6 @@ func TestPersistentDB(t *testing.T) { ...@@ -284,8 +277,6 @@ func TestPersistentDB(t *testing.T) {
_obj2.value = "kitty" _obj2.value = "kitty"
at2, err := ZPyCommit(zurl, at1, _obj2); X(err) at2, err := ZPyCommit(zurl, at1, _obj2); X(err)
println("000")
// new db connection should see the change // new db connection should see the change
// XXX currently there is a race because db.Open does not do proper Sync // XXX currently there is a race because db.Open does not do proper Sync
txn2, ctx2 := transaction.New(ctx) txn2, ctx2 := transaction.New(ctx)
...@@ -328,15 +319,13 @@ func TestPersistentDB(t *testing.T) { ...@@ -328,15 +319,13 @@ func TestPersistentDB(t *testing.T) {
checkObj(obj1, conn1, 101, InvalidTid, GHOST, 0, nil) checkObj(obj1, conn1, 101, InvalidTid, GHOST, 0, nil)
checkObj(obj2, conn1, 102, at1, UPTODATE, 0, nil) checkObj(obj2, conn1, 102, at1, UPTODATE, 0, nil)
println("AAA")
// txn1 completes - conn1 goes back to db pool // txn1 completes - conn1 goes back to db pool
assert.Equal(conn1.txn, txn1) assert.Equal(conn1.txn, txn1)
txn1.Abort() txn1.Abort()
assert.Equal(conn1.txn, nil) assert.Equal(conn1.txn, nil)
assert.Equal(db.pool, []*Connection{conn1}) assert.Equal(db.pool, []*Connection{conn1})
println("\n\nBBB") println("\n\nCONN3")
// open new connection - it should be conn1 but at updated database view // open new connection - it should be conn1 but at updated database view
txn3, ctx3 := transaction.New(ctx) txn3, ctx3 := transaction.New(ctx)
...@@ -347,13 +336,12 @@ func TestPersistentDB(t *testing.T) { ...@@ -347,13 +336,12 @@ func TestPersistentDB(t *testing.T) {
assert.Equal(conn1.db, db) assert.Equal(conn1.db, db)
assert.Equal(conn1.txn, txn3) assert.Equal(conn1.txn, txn3)
assert.Equal(db.pool, []*Connection{}) assert.Equal(db.pool, []*Connection{})
// XXX ctx1 = ctx3 (not to use 3 below) ? ctx1 = ctx3 // not to use ctx3 below
ctx3 = nil
println("CCC")
// obj2 should be invalidated // obj2 should be invalidated
assert.Equal(conn1.Cache().Get(101), obj1) // XXX is assert.Equal(conn1.Cache().Get(101), obj1) // XXX is
assert.Equal(conn1.Cache().Get(101), obj2) // XXX is assert.Equal(conn1.Cache().Get(102), obj2) // XXX is
checkObj(obj1, conn1, 101, InvalidTid, GHOST, 0, nil) checkObj(obj1, conn1, 101, InvalidTid, GHOST, 0, nil)
checkObj(obj2, conn1, 102, InvalidTid, GHOST, 0, nil) checkObj(obj2, conn1, 102, InvalidTid, GHOST, 0, nil)
...@@ -379,6 +367,8 @@ func TestPersistentDB(t *testing.T) { ...@@ -379,6 +367,8 @@ func TestPersistentDB(t *testing.T) {
// TODO Resync (without δtail coverage) // TODO Resync (without δtail coverage)
// XXX cache dropping entries after GC // XXX cache dropping entries after GC
// XXX Get(txn = different) -> panic
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment