1. 15 Jul, 2020 1 commit
  2. 14 Jul, 2020 1 commit
  3. 10 Jul, 2020 1 commit
    • Michał Kępień's avatar
      Fix locking for LMDB 0.9.26 · 25818ac8
      Michał Kępień authored
      When "rndc reconfig" is run, named first configures a fresh set of views
      and then tears down the old views.  Consider what happens for a single
      view with LMDB enabled; "envA" is the pointer to the LMDB environment
      used by the original/old version of the view, "envB" is the pointer to
      the same LMDB environment used by the new version of that view:
      
       1. mdb_env_open(envA) is called when the view is first created.
       2. "rndc reconfig" is called.
       3. mdb_env_open(envB) is called for the new instance of the view.
       4. mdb_env_close(envA) is called for the old instance of the view.
      
      This seems to have worked so far.  However, an upstream change [1] in
      LMDB which will be part of its 0.9.26 release prevents the above
      sequence of calls from working as intended because the locktable mutexes
      will now get destroyed by the mdb_env_close() call in step 4 above,
      causing any subsequent mdb_txn_begin() calls to fail (because all of the
      above steps are happening within a single named process).
      
      Preventing the above scenario from happening would require either
      redesigning the way we use LMDB in BIND, which is not something we can
      easily backport, or redesigning the way BIND carries out its
      reconfiguration process, which would be an even more severe change.
      
      To work around the problem, set MDB_NOLOCK when calling mdb_env_open()
      to stop LMDB from controlling concurrent access to the database and do
      the necessary locking in named instead.  Reuse the view->new_zone_lock
      mutex for this purpose to prevent the need for modifying struct dns_view
      (which would necessitate library API version bumps).  Drop use of
      MDB_NOTLS as it is made redundant by MDB_NOLOCK: MDB_NOTLS only affects
      where LMDB reader locktable slots are stored while MDB_NOLOCK prevents
      the reader locktable from being used altogether.
      
      [1] https://git.openldap.org/openldap/openldap/-/commit/2fd44e325195ae81664eb5dc36e7d265927c5ebc
      
      (cherry picked from commit 53120279)
      25818ac8
  4. 29 Jun, 2020 6 commits
  5. 18 Jun, 2020 1 commit
  6. 17 Jun, 2020 1 commit
  7. 16 Jun, 2020 1 commit
  8. 03 Jun, 2020 1 commit
  9. 02 Jun, 2020 1 commit
  10. 01 Jun, 2020 1 commit
    • Michał Kępień's avatar
      Add Danger Python to GitLab CI · 5190c428
      Michał Kępień authored
      Certain rules of the BIND development process are not codified anywhere
      and/or are used inconsistently.  In an attempt to improve this
      situation, add a GitLab CI job which uses Danger Python to add comments
      to merge requests when certain expectations are not met.  Two categories
      of feedback are used, only one of which - fail() - causes the GitLab CI
      job to fail.  Exclude dangerfile.py from Python QA checks as the way the
      contents of that file are evaluated triggers a lot of Flake8 and PyLint
      warnings.
      
      (cherry picked from commit 36bb45a8)
      5190c428
  11. 21 May, 2020 1 commit
    • Michał Kępień's avatar
      Do not install Python packages in GitLab CI jobs · 513378a1
      Michał Kępień authored
      As Python QA tools, BIND system test prerequisites, and documentation
      building utilities are now all included in operating system images used
      in GitLab CI, do not use pip for installing them in each CI job any
      more.
      
      (cherry picked from commit e3c21729)
      513378a1
  12. 19 May, 2020 1 commit
  13. 18 May, 2020 3 commits
    • Michał Kępień's avatar
      Work around cppcheck 2.0 uninitvar false positives · 41b4af5d
      Michał Kępień authored
      cppcheck 2.0 reports false positives about uninitialized variables in a
      lot of places throughout BIND source code, e.g.:
      
          bin/dig/host.c:386:24: error: Uninitialized variable: length [uninitvar]
           printf("%.*s", (int)r.length, (char *)r.base);
                                 ^
      
      Apparently cppcheck 2.0 has issues with processing (&var)->field syntax,
      which is what the macros from lib/isc/include/isc/buffer.h are evaluated
      to.  This issue was reported upstream [1] and will hopefully be
      addressed in a future cppcheck release.
      
      In the meantime, to avoid modifying BIND source code in multiple places
      just because of a static checker false positive, work around the issue
      by adding intermediate variables to buffer macro definitions using a sed
      invocation in the cppcheck job script.
      
      [1] https://sourceforge.net/p/cppcheck/discussion/general/thread/122153e3c1/
      
      (cherry picked from commit 481fa34e)
      41b4af5d
    • Michał Kępień's avatar
      Make GCC version extraction work with GCC 10 · b5608306
      Michał Kępień authored
      Add whitespace to the regular expression used for extracting the GCC
      version from "gcc --version" output so that it works properly with
      multi-digit major version numbers.
      
      (cherry picked from commit 3b48eec7)
      b5608306
    • Michał Kępień's avatar
      Ensure cppcheck creates a HTML report upon failure · 90a20ad8
      Michał Kępień authored
      Commit 00f12220 broke the cppcheck job
      in GitLab CI: when cppcheck fails, the script is immediately
      interrupted, preventing cppcheck-htmlreport from being run.  To ensure
      the HTML report is generated when cppcheck fails, revert to invoking
      cppcheck-htmlreport in the "after_script" part of the job.
      
      (cherry picked from commit cb2037ee)
      90a20ad8
  14. 15 May, 2020 1 commit
    • Michal Nowak's avatar
      Collect TXT and HTML reports produced by ABI checker · db09c630
      Michal Nowak authored
      Although in util/api-checker.sh we create textual reports, we don't
      preserve them in job artifacts, but we should.
      
      We don't want to keep all HTML pages present in the project root, but
      just those produced by ABI checker.
      
      (cherry picked from commit b5ccf95b)
      db09c630
  15. 11 May, 2020 1 commit
  16. 30 Apr, 2020 2 commits
  17. 29 Apr, 2020 2 commits
  18. 16 Apr, 2020 2 commits
  19. 15 Apr, 2020 2 commits
  20. 26 Mar, 2020 8 commits
    • Michał Kępień's avatar
      Remove unused YAML anchors · 9e716a0a
      Michał Kępień authored
      Some YAML anchors defined in .gitlab-ci.yml are not subsequently used.
      Remove them to prevent confusion.
      
      (cherry picked from commit 3d121ede)
      9e716a0a
    • Michał Kępień's avatar
      Do not install compiledb in cppcheck job · 7e45ec00
      Michał Kępień authored
      compiledb is already included in the Docker image used by the cppcheck
      job.  Do not attempt installing it again.
      
      (cherry picked from commit 3d264dbe)
      7e45ec00
    • Michał Kępień's avatar
      Include compiler name in all build/test job names · 13b942f6
      Michał Kępień authored
      Most build/test job names already contain a "clang", "gcc", or "msvc"
      prefix which indicates the compiler used for a given job.  Apply that
      naming convention to all build/test job names.
      
      (cherry picked from commit 0c898084)
      13b942f6
    • Michał Kępień's avatar
      Refactor TSAN unit test job definitions · cb541ea2
      Michał Kępień authored
      Multiple YAML keys have identical values for both TSAN unit test job
      definitions.  Extract these common keys to a YAML anchor and use it in
      TSAN unit test job definitions to reduce code duplication.
      
      (cherry picked from commit 84463f33)
      cb541ea2
    • Michał Kępień's avatar
      Run "kyua report-html" for TSAN unit test jobs · ac439761
      Michał Kępień authored
      Definitions of jobs running unit tests under TSAN contain an
      "after_script" YAML key.  Since the "unit_test_job" anchor is included
      in those job definitions before "after_script" is defined, the
      job-specific value of that key overrides the one defined in the included
      anchor.  This prevents "kyua report-html" from being run for TSAN unit
      test jobs.  Moving the invocation of "kyua report-html" to the "script"
      key in the "unit_test_job" anchor is not acceptable as it would cause
      the exit code of that command to determine the result of all unit test
      jobs and we need that to be the exit code of "make unit".  Instead, add
      "kyua report-html" invocations to the "after_script" key of TSAN unit
      test job definitions to address the problem without affecting other job
      definitions.
      
      (cherry picked from commit 6ebce942)
      ac439761
    • Michał Kępień's avatar
      Refactor TSAN system test job definitions · a052bac3
      Michał Kępień authored
      Multiple YAML keys have identical values for both TSAN system test job
      definitions.  Extract these common keys to a YAML anchor and use it in
      TSAN system test job definitions to reduce code duplication.
      
      (cherry picked from commit a9aa295f)
      a052bac3
    • Michał Kępień's avatar
      Drop "before_script" key from TSAN job definitions · 671e0e7a
      Michał Kępień authored
      Both "system_test_job" and "unit_test_job" YAML anchors contain a
      "before_script" key.  TSAN job definitions first specify their own value
      of the "before_script" key and then include the aforementioned YAML
      anchors, which results in the value of the "before_script" key being
      overridden with the value specified by the included anchor.  Given this,
      remove "before_script" definitions specific to TSAN jobs as they serve
      no practical purpose.
      
      (cherry picked from commit 8ef01c7b)
      671e0e7a
    • Michał Kępień's avatar
      Define TSAN options in a global variable · a9bc2311
      Michał Kępień authored
      All assignments for the TSAN_OPTIONS variable are identical across the
      entire .gitlab-ci.yml file.  Define a global TSAN_OPTIONS_COMMON
      variable and use it in job definitions to reduce code duplication.
      
      (cherry picked from commit 6325c099)
      a9bc2311
  21. 25 Mar, 2020 2 commits