1. 29 Jun, 2021 4 commits
    • Kirill Smelkov's avatar
      X δbtail += ForgetPast · d0fe680a
      Kirill Smelkov authored
      d0fe680a
    • Kirill Smelkov's avatar
      Merge branch 't' into t2 · a8177067
      Kirill Smelkov authored
      * t:
      a8177067
    • Kirill Smelkov's avatar
      X Get rebuild tests to run in a sane time; Add proper random-based testing for rebuild · c9f13fc7
      Kirill Smelkov authored
      Now both normal and random tests for all Update and rebuild could be
      exercised as part of regular test runs.
      
      * t2:
        X rebuild: tests: Random testing
        X rebuild: tests: Don't exercise keys from keys2 that already became tracked after Track(keys1) + Update
        X rebuild: tests: Inline _assertTrack
        X rebuild: tests: Don't compute keyCover in trackSet
        X rebuild: tests: Don't recompute trackSet(keys1R2) several times
        X rebuild: tests: Move ΔBtail.Clone test out of hot inner loop into separate test
        X tests: Factor-out tree-test-env into tTreeEnv
        X xbtree: Less copy/garbage in RangedKeySet ops
        X rebuild: tests: Precompute kadj10·kadj21
        X rebuild: tests: Don't access ZODB in xtrackKeys
        X rebuild: tests: Don't access ZODB in XGetδKV
        X rebuild: tests: Don't reflect.DeepEqual in inner loop
        .
        .
        .
        .
        .
        .
      c9f13fc7
    • Kirill Smelkov's avatar
      X rebuild: tests: Random testing · e9c4b619
      Kirill Smelkov authored
      Rework py allstructs to emit just set of random trees for one kv.
      Rework TestΔBTailAllStructs to iterate through such obtained sets and
      generate all pairs and triplets. Previously it was only pairs which is
      not enough to verify rebuild properly.
      e9c4b619
  2. 28 Jun, 2021 7 commits
  3. 25 Jun, 2021 3 commits
  4. 24 Jun, 2021 13 commits
    • Kirill Smelkov's avatar
      X rebuild: tests: Don't reflect.DeepEqual in inner loop · 324241eb
      Kirill Smelkov authored
      154s -> 130s
      324241eb
    • Kirill Smelkov's avatar
      . · 086ae670
      Kirill Smelkov authored
      086ae670
    • Kirill Smelkov's avatar
      . · e4e35723
      Kirill Smelkov authored
      e4e35723
    • Kirill Smelkov's avatar
      . · 05644ccc
      Kirill Smelkov authored
      05644ccc
    • Kirill Smelkov's avatar
      . · 986e4a38
      Kirill Smelkov authored
      986e4a38
    • Kirill Smelkov's avatar
      . · ee9d003b
      Kirill Smelkov authored
      ee9d003b
    • Kirill Smelkov's avatar
      . · 45ce369a
      Kirill Smelkov authored
      45ce369a
    • Kirill Smelkov's avatar
      X ΔBtail.rebuild started to work draftly · 52c72dbb
      Kirill Smelkov authored
      * t2: (50 commits)
        .
        X rebuild: Serial tests now started to PASS draftly
        .
        X rebuild: Don't return nil for empty ΔPPTreeSubSet - that leads to SIGSEGV
        X treediff: Fix BUG while computing AB coverage
        X ΔBtail.Clone had bug that it was aliasing klon and orig data
        X Fix rebuild with ø @at2
        X Fix bug in PPTreeSubSet.Difference  - it was always leaving root node alive
        .
        .
        X found why TestΔBTailAllStructs was not effective to find δtkeycov bugs
        .
        .
        X wcfs: assert that keycov only grow
        .
        X another bug in δtkeyconv computation
        .
        .
        .
        .
        ...
      52c72dbb
    • Kirill Smelkov's avatar
      . · 8402f4c3
      Kirill Smelkov authored
      8402f4c3
    • Kirill Smelkov's avatar
      X rebuild: Serial tests now started to PASS draftly · c34907cf
      Kirill Smelkov authored
          $ go test -v -failfast -run 'TestΔBTail$/rebuild'
          ...
          PASS
          ok      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree        176.661s
      c34907cf
    • Kirill Smelkov's avatar
      . · 22d712a5
      Kirill Smelkov authored
      22d712a5
    • Kirill Smelkov's avatar
      X rebuild: Don't return nil for empty ΔPPTreeSubSet - that leads to SIGSEGV · ddb28043
      Kirill Smelkov authored
      --- FAIL: TestΔBTail (0.74s)
          --- FAIL: TestΔBTail/rebuild/T/T1/T-T2/B0:e-B1:f-B2:g→T1/T-T/B0:g-T2/B1:h-B2:g (0.00s)
              --- FAIL: TestΔBTail/rebuild/T/T1/T-T2/B0:e-B1:f-B2:g→T1/T-T/B0:g-T2/B1:h-B2:g/_T{};R (0.00s)
                  --- FAIL: TestΔBTail/rebuild/T/T1/T-T2/B0:e-B1:f-B2:g→T1/T-T/B0:g-T2/B1:h-B2:g/_T{};R/_→T1/T-T/B0:g-T/B1:e (0.00s)
      panic: runtime error: invalid memory address or nil pointer dereference [recovered]
              panic: runtime error: invalid memory address or nil pointer dereference
      [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x632cc1]
      
      goroutine 238 [running]:
      testing.tRunner.func1.2(0x696aa0, 0x893f70)
              /home/kirr/src/tools/go/go/src/testing/testing.go:1143 +0x332
      testing.tRunner.func1(0xc000001b00)
              /home/kirr/src/tools/go/go/src/testing/testing.go:1146 +0x4b6
      panic(0x696aa0, 0x893f70)
              /home/kirr/src/tools/go/go/src/runtime/panic.go:965 +0x1b9
      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree.PPTreeSubSet.ApplyΔ(0xc00040f9b0, 0x0)
              /home/kirr/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree/pptreesubset.go:515 +0x41
      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree.(*ΔTtail).rebuild(0xc00040f830, 0xc, 0xc00040f500, 0xc000142b40, 0x0, 0x0, 0x0)
              /home/kirr/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree/δbtail.go:371 +0x145
      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree.(*ΔBtail).rebuildAll(0xc00015dc00, 0x0, 0x0)
              /home/kirr/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree/δbtail.go:319 +0x18c
      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree.xverifyΔBTail_rebuild_TR(0xc000001b00, 0xc000142b40, 0xc00015dc00, 0xc00006a960, 0xc, 0xc0004863c0, 0xc00040f3b0, 0xc00040f5c0, 0xc00040f650, 0xc00040f740, ...)
              /home/kirr/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree/δbtail_test.go:1127 +0x1b6
      lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree.xverifyΔBTail_rebuild.func1.1.1(0xc000001b00)
              /home/kirr/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree/δbtail_test.go:1074 +0xafa
      testing.tRunner(0xc000001b00, 0xc000555740)
              /home/kirr/src/tools/go/go/src/testing/testing.go:1193 +0xef
      created by testing.(*T).Run
              /home/kirr/src/tools/go/go/src/testing/testing.go:1238 +0x2b3
      exit status 2
      ddb28043
    • Kirill Smelkov's avatar
      X treediff: Fix BUG while computing AB coverage · 9d20f8e8
      Kirill Smelkov authored
      Access to node entries is valid only after the node was activated.
      And it fails otherwise.
      
      --- FAIL: TestΔBTail (0.63s)
          --- FAIL: TestΔBTail/rebuild/T/T1/B0:a-B1:b→T/T1/T-T/B0:c-B1:d (0.00s)
              --- FAIL: TestΔBTail/rebuild/T/T1/B0:a-B1:b→T/T1/T-T/B0:c-B1:d/_T{};R (0.00s)
                  --- FAIL: TestΔBTail/rebuild/T/T1/B0:a-B1:b→T/T1/T-T/B0:c-B1:d/_T{};R/_→T/T/B0:a (0.00s)
      panic: BUG: T000000000000003a points to T000000000000000c as parent in trackSet, but not found in T000000000000000c children [recovered]
              panic: BUG: T000000000000003a points to T000000000000000c as parent in trackSet, but not found in T000000000000000c children
      9d20f8e8
  5. 23 Jun, 2021 11 commits
    • Kirill Smelkov's avatar
      X ΔBtail.Clone had bug that it was aliasing klon and orig data · f60528c9
      Kirill Smelkov authored
      Rebuild tests were "surprisingly" failing when run as part of whole
      testsuite, but succeeding when run separately.
      f60528c9
    • Kirill Smelkov's avatar
      X Fix rebuild with ø @at2 · 450ba707
      Kirill Smelkov authored
      450ba707
    • Kirill Smelkov's avatar
      X Fix bug in PPTreeSubSet.Difference - it was always leaving root node alive · 66bc41ce
      Kirill Smelkov authored
      So that even A \ A was not ø.
      66bc41ce
    • Kirill Smelkov's avatar
      . · 7533257b
      Kirill Smelkov authored
      7533257b
    • Kirill Smelkov's avatar
      . · 6eeaff06
      Kirill Smelkov authored
      6eeaff06
    • Kirill Smelkov's avatar
      X found why TestΔBTailAllStructs was not effective to find δtkeycov bugs · 502e05c2
      Kirill Smelkov authored
      It was due to thinko in iterating through keys set - we were using key
      ordinals instead of keys themselvs. Now it find such bugs:
      
      === RUN   TestΔBTailAllStructs/Update/T1,3/B0:d-B1:a-B3:d,4:g→T1,4/B0:e-B1:a-B4:c
          δbtail_test.go:839: 2: trackSet:
                      have: map[000000000000000c:{pffffffffffffffff c2} 00000000000005c2:{p000000000000000c c0} 0000000000000618:{p000000000000000c c0}]
                      want: map[000000000000000c:{pffffffffffffffff c3} 00000000000005c2:{p000000000000000c c0} 0000000000000618:{p000000000000000c c0} 0000000000000620:{p000000000000000c c0}]
          δbtail_test.go:708: T1,3/B0:d-B1:a-B3:d,4:g -> T1,4/B0:e-B1:a-B4:c  ; tracked={0 1} :
      
              d12:  map[0:{d e} 3:{d ø} 4:{g c}]
              δTok: map[0:{d e} 3:{d ø} 4:{g c}]
              δT:   map[0:{d e}]
      
              δZ:               {000000000000000c 0000000000000618 0000000000000620}
              Tracked^δZ:       {0 1}
              kadj[Tracked^δZ]: {0 1 3 4 9223372036854775807}
              kadj: map[0:{0} 1:{1 3 4 9223372036854775807} 3:{1 3 4 9223372036854775807} 4:{1 3 4 9223372036854775807} 9223372036854775807:{1 3 4 9223372036854775807}]
      
              δtkeycov wrong:
              have: {}
              want: {[3,∞)}
              δT    ∌  δTok[3]
              δT    ∌  δTok[4]
      502e05c2
    • Kirill Smelkov's avatar
      . · 35bbf9b9
      Kirill Smelkov authored
      35bbf9b9
    • Kirill Smelkov's avatar
      . · 7a7c9756
      Kirill Smelkov authored
      7a7c9756
    • Kirill Smelkov's avatar
      X wcfs: assert that keycov only grow · 0917380e
      Kirill Smelkov authored
      Currently fails with e.g.:
      
      (neo) (z-dev) (g.env) kirr@deca:~/src/neo/src/lab.nexedi.com/nexedi/wendelin.core/wcfs/internal/xbtree$ go test -short -v -failfast -run 'TestΔBTail$/Update/T3/B1:a-B8:c→T7/B1:a-B8:c'
      === RUN   TestΔBTail
      2021/06/23 14:08:45 zodb: FIXME: open /tmp/δBTail926507346/1.fs: raw cache is not ready for invalidations -> NoCache forced
      === RUN   TestΔBTail/Update/T3/B1:a-B8:c→T7/B1:a-B8:c
          δbtail_test.go:812: BUG: tkeyCov1 ⊄ tkeyCov2:
                      tkeyCov1: {[3,∞)}
                      tkeyCov2: {[7,∞)}
                      tkeyCov1 \ tkeyCov2: {[3,7)}
          δbtail_test.go:708: T3/B1:a-B8:c -> T7/B1:a-B8:c  ; tracked={8} :
      
              d12:  map[]
              δTok: map[]
              δT:   map[]
      
              δZ:               {000000000000000c}
              Tracked^δZ:       {}
              kadj[Tracked^δZ]: {}
              kadj: map[1:{1 8 9223372036854775807} 8:{1 8 9223372036854775807} 9223372036854775807:{1 8 9223372036854775807}]
      
      --- FAIL: TestΔBTail (0.84s)
          --- FAIL: TestΔBTail/Update/T3/B1:a-B8:c→T7/B1:a-B8:c (0.00s)
      0917380e
    • Kirill Smelkov's avatar
      . · 595afd6a
      Kirill Smelkov authored
      595afd6a
    • Kirill Smelkov's avatar
      X another bug in δtkeyconv computation · f30826a6
      Kirill Smelkov authored
      === RUN   TestΔBTail/Update/T7/B1:a,2:b-B8:c,9:d→T3/T-T/B1:a,2:b-B8:c,9:d
          δbtail_test.go:832: 2: trackSet:
                      have: map[000000000000000c:{pffffffffffffffff c2} 0000000000000041:{p0000000000000043 c0} 0000000000000042:{p0000000000000044 c0} 0000000000000043:{p000000000000000c c1} 0000000000000044:{p000000000000000c c1}]
                      want: map[000000000000000c:{pffffffffffffffff c1} 0000000000000041:{p0000000000000043 c0} 0000000000000043:{p000000000000000c c1}]
          δbtail_test.go:708: T7/B1:a,2:b-B8:c,9:d -> T3/T-T/B1:a,2:b-B8:c,9:d  ; tracked={1} :
      
              d12:  map[]
              δTok: map[]
              δT:   map[]
      
              δZ:               {000000000000000c 0000000000000043 0000000000000044}
              Tracked^δZ:       {}
              kadj[Tracked^δZ]: {}
              kadj: map[1:{1 2 8 9 9223372036854775807} 2:{1 2 8 9 9223372036854775807} 8:{1 2 8 9 9223372036854775807} 9:{1 2 8 9 9223372036854775807} 9223372036854775807:{1 2 8 9 9223372036854775807}]
      
              δtkeycov wrong:
              have: {[7,∞)}
              want: {}
      f30826a6
  6. 22 Jun, 2021 2 commits