Commit f1d2aae6 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 899dbc2c
...@@ -68,7 +68,8 @@ type Value = zodb.Oid // XXX assumes key points to IPersistent ...@@ -68,7 +68,8 @@ type Value = zodb.Oid // XXX assumes key points to IPersistent
// //
// ΔTail is not safe for concurrent access. XXX -> is safe to use from multiple goroutines simultaneously. // ΔTail is not safe for concurrent access. XXX -> is safe to use from multiple goroutines simultaneously.
type ΔTail struct { type ΔTail struct {
δZtail *zodb.ΔTail // raw ZODB changes; Kept to rebuild δBtail/byRoot after new Track // XXX -> δZtail
ΔZtail *zodb.ΔTail // raw ZODB changes; Kept to rebuild δBtail/byRoot after new Track
δroot []ΔRoots // which BTree were changed; Noted only by keys ∈ tracket subset δroot []ΔRoots // which BTree were changed; Noted only by keys ∈ tracket subset
byRoot map[*Tree]*ΔTreeTail // root -> k/v change history; only for keys ∈ tracket subset byRoot map[*Tree]*ΔTreeTail // root -> k/v change history; only for keys ∈ tracket subset
...@@ -116,7 +117,7 @@ type ΔTree struct { ...@@ -116,7 +117,7 @@ type ΔTree struct {
// Initial coverage is (at₀, at₀]. // Initial coverage is (at₀, at₀].
func NewΔTail(at0 zodb.Tid) *ΔTail { func NewΔTail(at0 zodb.Tid) *ΔTail {
return &ΔTail{ return &ΔTail{
δZtail: zodb.NewΔTail(at0), ΔZtail: zodb.NewΔTail(at0),
trackIdx: make(map[zodb.Oid]SetTree), trackIdx: make(map[zodb.Oid]SetTree),
} }
} }
...@@ -124,12 +125,12 @@ func NewΔTail(at0 zodb.Tid) *ΔTail { ...@@ -124,12 +125,12 @@ func NewΔTail(at0 zodb.Tid) *ΔTail {
// Head is similar to zodb.ΔTail.Head . XXX ok? // Head is similar to zodb.ΔTail.Head . XXX ok?
func (δb *ΔTail) Head() zodb.Tid { func (δb *ΔTail) Head() zodb.Tid {
//return δb.head //return δb.head
return δb.δZtail.Head() return δb.ΔZtail.Head()
} }
// Tail is similar to zodb.ΔTail.Tail . XXX ok? // Tail is similar to zodb.ΔTail.Tail . XXX ok?
func (δb *ΔTail) Tail() zodb.Tid { func (δb *ΔTail) Tail() zodb.Tid {
return δb.δZtail.Tail() return δb.ΔZtail.Tail()
} }
// XXX SliceByRev? // XXX SliceByRev?
...@@ -178,7 +179,7 @@ func (δb *ΔTail) Track(path []Node) { // XXX Tree|Bucket; path[0] = root ...@@ -178,7 +179,7 @@ func (δb *ΔTail) Track(path []Node) { // XXX Tree|Bucket; path[0] = root
// //
// XXX returned [](root, []key) -> move to separate SliceByRev to get diff? // XXX returned [](root, []key) -> move to separate SliceByRev to get diff?
func (btail *ΔTail) Update(δZ *zodb.EventCommit) []ΔTree { func (btail *ΔTail) Update(δZ *zodb.EventCommit) []ΔTree {
btail.δZtail.Append(δZ.Tid, δZ.Changev) btail.ΔZtail.Append(δZ.Tid, δZ.Changev)
// {} root -> []oid changed under that root // {} root -> []oid changed under that root
δZByRoot := map[*Tree][]zodb.Oid{} // XXX -> map[*Tree]SetOid ? δZByRoot := map[*Tree][]zodb.Oid{} // XXX -> map[*Tree]SetOid ?
...@@ -253,7 +254,7 @@ func (btail *ΔTail) LastRevOf(root *Tree, key Key, at zodb.Tid) (_ zodb.Tid, ex ...@@ -253,7 +254,7 @@ func (btail *ΔTail) LastRevOf(root *Tree, key Key, at zodb.Tid) (_ zodb.Tid, ex
} }
func (btail *ΔTail) ForgetPast(revCut zodb.Tid) { func (btail *ΔTail) ForgetPast(revCut zodb.Tid) {
btail.δZtail.ForgetPast(revCut) // XXX stub btail.ΔZtail.ForgetPast(revCut) // XXX stub
} }
......
...@@ -136,7 +136,7 @@ func (f *BigFile) LastBlkRev(blk int64, at zodb.Tid) (_ zodb.Tid, exact bool) { ...@@ -136,7 +136,7 @@ func (f *BigFile) LastBlkRev(blk int64, at zodb.Tid) (_ zodb.Tid, exact bool) {
// blktab[blk] was changed to point to a zblk @rev. // blktab[blk] was changed to point to a zblk @rev.
// blk revision is max rev and when zblk changed last in (rev, at] range. // blk revision is max rev and when zblk changed last in (rev, at] range.
zblkRev, zblkRevExact := δf.ΔTail.δZtail.LastRevOf(zblkOid, at) zblkRev, zblkRevExact := δf.ΔTail.ΔZtail.LastRevOf(zblkOid, at)
if zblkRev > tabRev { if zblkRev > tabRev {
return zblkRev, zblkRevExact return zblkRev, zblkRevExact
} else { } else {
......
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