Commit 6b2c1d79 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 1ba21b2c
...@@ -241,6 +241,7 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -241,6 +241,7 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
i := 0 i := 0
delfilePrev := false delfilePrev := false
epochv := []zodb.Tid{0}
for test := range testq { for test := range testq {
i++ i++
δblk := setI64{} δblk := setI64{}
...@@ -252,11 +253,11 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -252,11 +253,11 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
delfile = true delfile = true
} }
epoch := delfile || (!delfile && delfilePrev && !delfilePrev) newEpoch := delfile || (!delfile && delfilePrev && !delfilePrev)
delfilePrev = delfile delfilePrev = delfile
// epoch -> reset // newEpoch -> reset
if epoch { if newEpoch {
blkTab = map[int64]string{} blkTab = map[int64]string{}
Zinblk = map[string]setI64{} Zinblk = map[string]setI64{}
δblk = nil δblk = nil
...@@ -315,6 +316,9 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -315,6 +316,9 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
req = tTxt + " " + dTxt req = tTxt + " " + dTxt
} }
commit := t.CommitTree(req) commit := t.CommitTree(req)
if newEpoch {
epochv = append(epochv, commit.At)
}
// update blkRevAt // update blkRevAt
var blkRevPrev map[int64]zodb.Tid var blkRevPrev map[int64]zodb.Tid
...@@ -323,7 +327,7 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -323,7 +327,7 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
} }
blkRev := map[int64]zodb.Tid{} blkRev := map[int64]zodb.Tid{}
for blk, rev := range blkRevPrev { for blk, rev := range blkRevPrev {
if epoch { if newEpoch {
blkRev[blk] = commit.At blkRev[blk] = commit.At
} else { } else {
blkRev[blk] = rev blkRev[blk] = rev
...@@ -340,10 +344,10 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -340,10 +344,10 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
err = zconn.Resync(ctx, commit.At); X(err) err = zconn.Resync(ctx, commit.At); X(err)
var δfok *ΔFile var δfok *ΔFile
if epoch || len(δblk) != 0 { if newEpoch || len(δblk) != 0 {
δfok = &ΔFile{ δfok = &ΔFile{
Rev: commit.At, Rev: commit.At,
Epoch: epoch, Epoch: newEpoch,
Blocks: δblk, Blocks: δblk,
Size: δtree, // not strictly ok, but matches current ΔFtail code Size: δtree, // not strictly ok, but matches current ΔFtail code
} }
...@@ -454,7 +458,17 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) { ...@@ -454,7 +458,17 @@ func testΔFtail(t_ *testing.T, testq chan ΔFTestEntry) {
blkRev := blkRevAt[at] blkRev := blkRevAt[at]
for _, blk := range blkv { for _, blk := range blkv {
rev, exact := δftail.LastBlkRev(ctx, zfile, blk, at) rev, exact := δftail.LastBlkRev(ctx, zfile, blk, at)
revOK, exactOK := blkRev[blk], true revOK, ok := blkRev[blk]
if !ok {
k := len(epochv) - 1
for ; k >= 0; k-- {
if epochv[k] <= at {
break
}
}
revOK = epochv[k]
}
exactOK := true
if revOK <= δftail.Tail() { if revOK <= δftail.Tail() {
revOK, exactOK = δftail.Tail(), false revOK, exactOK = δftail.Tail(), false
} }
......
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