1. 03 Jan, 2021 1 commit
  2. 11 Dec, 2020 8 commits
    • Kirill Smelkov's avatar
      . · f2effbb7
      Kirill Smelkov authored
      f2effbb7
    • Kirill Smelkov's avatar
      Merge branch 'master' into t · 79f8ac05
      Kirill Smelkov authored
      * master:
        tests: Don't try to access db.storage when automatically closing connections
        bigfile/py: Garbage-collect BigFile <=> BigFileH cycles
        bigfile/py: Move PyVMA's support for cyclic GC close to pyvma_dealloc
        t/tfault-run: Require bash
        t/tfault-run: Clear state from previous run before starting
        Add way to run tests via nxdtest
      79f8ac05
    • Kirill Smelkov's avatar
      . ci · 3db1c907
      Kirill Smelkov authored
      3db1c907
    • Kirill Smelkov's avatar
      X wcfs: Move wconn<->zconn sync functionality into wcfs.clien._wczsync · cf92937f
      Kirill Smelkov authored
      - it is more logical
      - this way !wcfs tests don't try to excerceise wcfs functionality (and
        unexpectedly spawn wcfs server).
      cf92937f
    • Kirill Smelkov's avatar
      tests: Don't try to access db.storage when automatically closing connections · fd6b5252
      Kirill Smelkov authored
      DB.close() does `del self.storage`.
      
      https://github.com/zopefoundation/ZODB/blob/5.6.0-14-g0eae10cd0/src/ZODB/DB.py#L646
      
      This way if DB was closed, but some conn(s) were not, it will crash in
      teardown as e.g. below:
      
          _____________ ERROR at teardown of test_bigfile_zblk1_zdata_reuse ______________
      
              def teardown_module():
          >       testdb.teardown()
      
          bigfile/tests/test_filezodb.py:58:
          _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      
          self = <wendelin.lib.testing.TestDB_ZEO object at 0x7fb9c0216350>
      
              def teardown(self):
                  # close connections that test code forgot to close
                  for connref, tb in self.connv:
                      conn = connref()
                      if conn is None:
                          continue
                      if not conn.opened:
                          continue    # still alive, but closed
                      print("W: testdb: teardown: %s left not closed by test code"
                            "; opened by:\n%s" % (conn, tb), file=sys.stderr)
      
                      db = conn.db()
          >           stor = db.storage
          E           AttributeError: 'DB' object has no attribute 'storage'
      
          lib/testing.py:217: AttributeError
      
      The fix is simple - don't use db.storage at all, because it is not actually used in that code.
      fd6b5252
    • Kirill Smelkov's avatar
      . ci · 6f1b871c
      Kirill Smelkov authored
      6f1b871c
    • Kirill Smelkov's avatar
      X wcfs: lsof tweaks · 68ee5bdc
      Kirill Smelkov authored
      - use +D to request recursive search of everything under mntpt
      - use -w to avoid seeing many-many warnings in case there are stale FUSE mounts.
      68ee5bdc
    • Kirill Smelkov's avatar
      tests: Don't try to access db.storage when automatically closing connections · e5d73d9d
      Kirill Smelkov authored
      DB.close() does `del self.storage`.
      
      https://github.com/zopefoundation/ZODB/blob/5.6.0-14-g0eae10cd0/src/ZODB/DB.py#L646
      
      This way if DB was closed, but some conn(s) were not, it will crash in
      teardown as e.g. below:
      
          _____________ ERROR at teardown of test_bigfile_zblk1_zdata_reuse ______________
      
              def teardown_module():
          >       testdb.teardown()
      
          bigfile/tests/test_filezodb.py:58:
          _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      
          self = <wendelin.lib.testing.TestDB_ZEO object at 0x7fb9c0216350>
      
              def teardown(self):
                  # close connections that test code forgot to close
                  for connref, tb in self.connv:
                      conn = connref()
                      if conn is None:
                          continue
                      if not conn.opened:
                          continue    # still alive, but closed
                      print("W: testdb: teardown: %s left not closed by test code"
                            "; opened by:\n%s" % (conn, tb), file=sys.stderr)
      
                      db = conn.db()
          >           stor = db.storage
          E           AttributeError: 'DB' object has no attribute 'storage'
      
          lib/testing.py:217: AttributeError
      
      The fix is simple - don't use db.storage at all, because it is not actually used in that code.
      e5d73d9d
  3. 10 Dec, 2020 1 commit
  4. 09 Dec, 2020 5 commits
  5. 04 Dec, 2020 1 commit
  6. 29 Nov, 2020 3 commits
  7. 27 Nov, 2020 2 commits
  8. 20 Nov, 2020 6 commits
  9. 18 Nov, 2020 1 commit
  10. 17 Nov, 2020 3 commits
    • Kirill Smelkov's avatar
      . · 8aedb049
      Kirill Smelkov authored
      8aedb049
    • Kirill Smelkov's avatar
      bigfile/py: Garbage-collect BigFile <=> BigFileH cycles · a6a8f5ba
      Kirill Smelkov authored
      Since ZBigFile keeps references to fileh objects that are created
      through it it forms a file <=> fileh cycle that is not collected without
      cyclic GC:
      
      https://lab.nexedi.com/nexedi/wendelin.core/blob/v0.13-52-ga702d41/bigfile/file_zodb.py#L497
      https://lab.nexedi.com/nexedi/wendelin.core/blob/v0.13-52-ga702d41/bigfile/file_zodb.py#L566-571
      
      We did not noticed this leak until now because it is small, but with
      upcoming wendelin.core 2 it is important to release a fileh, because
      there is WCFS connection associated with fileh, and if fileh is not
      released, that connection also stays alive, keeping on-WCFS resources
      still being used, and preventing WCFS from being unmounted cleanly.
      
      -> Add cyclic GC support to PyBigFile / PyBigFileH
      
      NOTE: we still don't allow PyVMA <=> PyBigFileH cycles to be collected,
      because fileh_close called from fileh.__del__ asserts that there are no
      live mappings left. See added comments for details. There is no
      known practical need to use such cycles, so this should be ok.
      
      See also other patches on cyclic GC topic:
      
      - 450ad804 (bigarray: ArrayRef support for BigArray)  // adds cyclic GC support for PyVMA
      - d97641d2 (bigfile/py: Properly untrack PyVMA from GC before dealloc)
      
      /proposed-for-review-on !12
      a6a8f5ba
    • Kirill Smelkov's avatar
      bigfile/py: Move PyVMA's support for cyclic GC close to pyvma_dealloc · 7cc35422
      Kirill Smelkov authored
      The logic in pyvma_traverse and pyvma_clear needs to be synchronized
      with PyVMA deallocation. In the next patche we'll be amending this
      logic, and it will help a reader to keep all those functions together.
      
      For the reference: PyVMA support for cyclic GC was introduced in
      450ad804 (bigarray: ArrayRef support for BigArray). See also d97641d2
      (bigfile/py: Properly untrack PyVMA from GC before dealloc).
      
      /proposed-for-review-on !12
      7cc35422
  11. 09 Nov, 2020 4 commits
  12. 08 Nov, 2020 2 commits
  13. 05 Nov, 2020 3 commits