Exercise 2: Version Skew vs. Missing Drain Period — Possible Solution ==================================================================== WHAT EACH SYMPTOM ACTUALLY LOOKS LIKE ------------------------------ Per this chapter's finding-box, "version skew (Chapter 7) produces wrong data or contract mismatches, because two genuinely different code versions are both answering requests. A missing drain period produces dropped or reset connections specifically at the exact moment of termination, because a request was still in flight when its server was killed out from under it." WHY BOTH ARE DEPLOY-CORRELATED BUT DIFFERENT ------------------------------ Both symptoms show up around deployments, which could make them look like the same underlying issue at a glance. But version skew is caused by two different, simultaneously-running code versions disagreeing about data shape - the requests themselves complete, just with incorrect or unexpected content. A missing drain period is caused by a request being physically interrupted mid-flight when its server process is terminated - the request never completes at all, producing a connection reset rather than a bad response. WHY THEY NEED DIFFERENT FIXES ------------------------------ Version skew is fixed by ensuring API compatibility across the version boundary (or by using techniques like expand-contract from Chapter 7) - it's a code/contract problem. A missing drain period is fixed by adding shutdown sequencing (mark not-ready, wait for in-flight requests, then terminate) - it's an operational/lifecycle problem, not a code contract problem. Applying the wrong fix (e.g. trying to make API versions compatible when the real issue is abrupt termination) wouldn't resolve the actual cause. WHY THIS WORKS AS AN ANSWER ------------------------------ It states the specific, distinct symptom each cause produces per the chapter's own wording, and explains why the underlying mechanisms (contract mismatch vs. physical interruption) require genuinely different categories of fix.