cmcfarlen commented on PR #13189:
URL: https://github.com/apache/trafficserver/pull/13189#issuecomment-4512896481

   # Trial Revert v2 — Notes
   
   Companion log for `revert-incompat-plan-v2.md`. Each section captures one
   revert step on branch `revert-incompat-trial-v2`.
   
   ## Setup
   
   - **Source branch**: `upstream/master`
   - **Source HEAD**: `09c4f8a125` (Enable code review settings in .asf.yaml, 
#13183)
   - **Trial branch**: `revert-incompat-trial-v2`
   - **Plan**: 11 reverts, dependency-aware order, pre-emptive LogAccess
     fix-up after 11-Dev revert.
   
   ## Reverts
   
   ### Step 1–4: Config-reload + TLS-cert-compression dependents
   
   | Step | PR | Commit | Result |
   |---|---|---|---|
   | 1 | #13090 | `4645b7dcb3` | clean, 43 files / +227 -903 |
   | 2 | #13110 | `34790b0a9d` | clean, 10 files / +11 -657 |
   | 3 | #13117 | `4f1d3594dd` | clean, 4 files / -27 |
   | 4 | #13088 | `b98d8d0b31` | clean (large; deletes TLS cert compression 
infra) |
   
   ### Step 5: #13070 plugin.yaml migration
   
   | | |
   |---|---|
   | Commit | `49d109470b` |
   | Result | **clean** (was 6 conflicts in v1; the dependent reverts cleared 
the path) |
   
   ### Step 6–7: Storage migration chain
   
   | Step | PR | Commit | Result |
   |---|---|---|---|
   | 6 | #13048 | `9828150402` | clean, 3 files |
   | 7 | #13031 | `6d32974095` | **clean** (was 5 conflicts in v1; #13048 + 
#13070 reverts already removed) |
   
   ### Step 8: #12998 Parallel SSL cert load
   
   | | |
   |---|---|
   | Commit | `e5136dde5b` |
   | Result | clean, 8 files (auto-merged records.yaml docs, RecordsConfig.cc, 
SSLConfig.cc) |
   
   ### Step 9: #12988 + #12997 — surface conflict on ReverseProxy.cc
   
   Initially attempted `git revert #12997` directly. Hit:
   - 1 content conflict in ReverseProxy.cc
   - 10 modify/delete conflicts on `tests/gold_tests/remap_yaml/*.yaml` files 
(added by #12997, modified by #13003 "Proxy Verifier: use concise stack 
protocol")
   
   Aborted, added **#12988** ("Publish remap table after initial load") to the
   revert list. #12988 is *not* incompatible — it's a compat improvement —
   but it touched the same `init_reverse_proxy()` block as #12997, creating a
   surface-level conflict.
   
   Revert order: #12988 → #12997. Both clean after that.
   
   | Step | PR | Commit |
   |---|---|---|
   | 9a | #12988 | `f0b3be46b7` |
   | 9b | #12997 | `8ef420635d` |
   
   ### Step 10: 11-Dev merge (#12983)
   
   | | |
   |---|---|
   | Commit | `30a01d6e41` |
   | Result | **9 conflicts** (down from 17 in v1 — dependent reverts cleared 
most surfaces) |
   
   Conflict resolution:
   - Manual: `Filenames.h`, `hostdb/CMakeLists.txt` (kept #13115 
`add_subdirectory(unit_tests)`), `records/CMakeLists.txt` (kept only 
`test_RecDumpRecords.cc`), `P_SSLConfig.h` (restored session-cache fields).
   - `--theirs`: `SSLUtils.cc` (tightly coupled to ssl_multicert.yaml), 4× gold 
tests.
   - `git rm`: 1 UD file (`negative-caching-malformed-cc.replay.yaml`).
   
   ### Step 11: #12913 master-side version bump
   
   | | |
   |---|---|
   | Commit | `f0f4f16149` |
   | Result | clean, 1 line |
   
   ### Step 12 (added during execution): #12404 cqssrt log field
   
   After 11-Dev revert, the restored `marshal_client_ssl_resumption_type`
   function referenced `m_http_sm`, which #13123 (kept on master, in 10.2.x as
   #13124) renamed to `m_data`. v1 fixed this with a fixup commit; v2 instead
   reverts the original PR (#12404) for cleanliness.
   
   | | |
   |---|---|
   | Commit | `26cafc24d2` |
   | Result | clean, 5 files / +3 -49 |
   
   #12404 is in **both** master and 10.2.x (pre-divergence). Reverting it on
   the trial branch is safe; reverting it in production would require also
   removing the `cqssrt` log field from 10.2.x (out of scope for the trial).
   
   ### Step 13 (incidental): cmake-format.sh fix
   
   Format hook hung because `git ls-tree -r HEAD` listed
   `src/config/CMakeLists.txt` (which had been deleted by an earlier revert)
   and `cmake-format` raised `FileNotFoundError`. Patched the script to
   filter out files staged for deletion via
   `git diff --cached --name-only --diff-filter=D`.
   
   | | |
   |---|---|
   | Commit | `3a8d37117b` |
   | Status | useful for upstream — not a revert |
   
   ## Build verification
   
   ```
   $ cmake --build build-mydev
   [265/266] Linking CXX executable src/traffic_server/traffic_server
   $ echo $?
   0
   ```
   
   **`traffic_server` binary built cleanly** (18 MB). Some `ld: warning: 
ignoring
   duplicate libraries` are present but cosmetic, not errors.
   
   ## Final state vs upstream/10.2.x
   
   - 261 commits on trial-v2 not on 10.2.x (master-additive PRs that survived)
   - 98 commits on 10.2.x not on trial-v2 (10.2.x branch-specific work)
   - 507 files changed, +15,778 / -3,869 lines
   
   ## v2 verdict: how painful, with lessons applied?
   
   **Mechanical effort once dependencies were known:** ~90 minutes total.
   13 reverts including the two discovered during execution (#12988, #12404).
   
   **Cost categories that v1 surfaced and v2 confirmed:**
   
   1. **Direct conflicts — small.** #13031 had 0 conflicts in v2 vs 5 in v1
      once the dependent reverts (#13070, #13048) ran first. The 11-Dev
      merge had 9 conflicts vs 17 in v1.
   2. **Dependency-chain reverts — predictable but additive.** The plan
      identified 7 dependents up front. One more (#12988) surfaced as a
      surface conflict during execution.
   3. **Silent post-merge dependencies — eliminated** by reverting #13088,
      #12998, #12997 *before* the 11-Dev merge. The build went clean on
      first attempt afterward.
   4. **#12404-style "old PR uses now-renamed member" — predicted, found.**
      Pre-emptive fix-up was in the plan; user preferred clean revert
      instead of fix-up.
   
   **Revised effort estimate for production:**
   
   - v1 estimate was 3–5 days optimistic / 1–2 weeks realistic.
   - v2 result: with dependency map in hand, the mechanical work is
     tractable in a single afternoon. **1–2 days realistic** for someone
     who can review the plan and resolve conflicts confidently.
   - The remaining cost is **social, not mechanical**: 13 reverts means 13
     contributor conversations about dropped/deferred features. Several of
     the reverted PRs (#12892, #13070, #12997, #13088, #12998) are
     significant work that authors will want re-landed once 10.2.0 ships.
   
   ## Trial branch state at completion
   
   - Branch: `revert-incompat-trial-v2`
   - HEAD: `3a8d37117b` (cmake-format.sh fix)
   - Build: **clean** ✓
   - Notes file and plan are uncommitted (intentional; trial artifacts)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to