Include develop in the dirty-restart compatibility test

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Storage Engines - Foundations
    • 51.97
    • None
    • None

      Background

      The dirty-restart compatibility scope (-d) runs test_dirty_restart for every ordered pair of branches in UPGRADE_TO_LATEST_UPGRADE_DOWNGRADE_RELEASE_BRANCHES. The pairing is a naive N×N double loop in compatibility_test_for_releases.sh:1158-1164:

      for b1 in "${upgrade_to_latest_upgrade_downgrade_release_branches[@]}"; do
          for b2 in "${upgrade_to_latest_upgrade_downgrade_release_branches[@]}"; do
              if [[ "$b1" != "$b2" ]]; then
                  test_dirty_restart "$b1" "$b2"
              fi
          done
      done
      

      This list does not include develop, unlike the NEWER scope, which uses version-aware pairing logic (add_pair, lines 886-932) that treats develop as a proxy for the next/upper-adjacent major release.

      Problem

      Because develop is excluded, the newest-tip code is never a dirty-restart source against older releases — until a new release branch is cut from develop and added to the list. At that point the tip's behavior is exercised for the first time, and any latent forward/backward-incompatibility surfaces as a surprise failure attributed to the branch-add change rather than to the underlying code.

      This is exactly what happened with WT-18096: adding mongodb-9.0 (built from develop) generated the brand-new pairs 9.0->7.0 and 9.0->6.0, which exposed a pre-existing test/format prefetch-config incompatibility (WT-16671) and forced a revert. Had develop been in the dirty-restart list all along, the incompatibility would have been caught continuously on mainline instead of at branch-cut time.

      Proposal

      Add develop to the dirty-restart branch list, treating it as "the future new release branch," so the newest-tip code is always paired against the supported older releases.

      Considerations

      • develop has no numeric version, so branch_major_version / branch_minor_version return empty for it. The current all-pairs loop has no ordering notion, but any move toward version-aware pairing (to avoid redundant/nonsensical pairs) will need to handle develop as the highest version — mirroring how add_pair already uses it as a proxy for the next major.
      • Confirm whether the existing version-sorting helpers are sufficient or need extending (per discussion, this logic may have been partially removed).
      • Verify this doesn't create redundant coverage against whatever the newest release branch is at any given time (e.g. develop and mongodb-9.0 both being tip-adjacent).

      Related

      WT-18096 (branch-add that triggered the revert), WT-16671 (prefetch config change), WT-12978 (prefetch=0 compat suppression).

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Luke Chen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: