{"data":{"id":"magento2-40242","source":"github-pr","sourceRef":"magento/magento2#40242","title":"Prevent `db_schema.xml` declarations with `comment=\"\"` from breaking zero downtime deployments","pr":{"number":40242,"url":"https://github.com/magento/magento2/pull/40242","author":"convenient","mergedAt":"2025-12-23T16:16:29Z","mergeCommit":"aaf013582414aed500cbf071f0b988b68fb72f98","headCommit":"3b022bb34fadf0677dddbedeb0f518d0d3a2c39c","baseRef":"2.4-develop","diffSha256":"d68636aee009ed8216ce22cd089e272a7b6c346258cfdaec41a2d12a42360fb4"},"issues":[{"number":40254,"url":"https://github.com/magento/magento2/issues/40254","title":"[Issue] Prevent `db_schema.xml` declarations with `comment=\"\"` from breaking zero downtime deployments","labels":["Area: Framework","Component: Framework/Setup","Issue: Confirmed","Priority: P2","Progress: done","Reported on 2.4.x","Reproduced on 2.4.x","Triage: Dev.Experience"],"kind":"pr-derived"}],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":null,"codeMatch":{"2.4.6":"conflict","2.4.6-p1":"conflict","2.4.6-p2":"conflict","2.4.6-p3":"conflict","2.4.6-p4":"conflict","2.4.6-p5":"conflict","2.4.6-p6":"conflict","2.4.6-p7":"conflict","2.4.6-p8":"conflict","2.4.6-p9":"conflict","2.4.6-p10":"conflict","2.4.6-p11":"conflict","2.4.6-p12":"conflict","2.4.6-p13":"conflict","2.4.6-p14":"conflict","2.4.6-p15":"conflict","2.4.7":"conflict","2.4.7-p1":"conflict","2.4.7-p2":"conflict","2.4.7-p3":"conflict","2.4.7-p4":"conflict","2.4.7-p5":"conflict","2.4.7-p6":"conflict","2.4.7-p7":"conflict","2.4.7-p8":"conflict","2.4.7-p9":"conflict","2.4.7-p10":"conflict","2.4.8":"conflict","2.4.8-p1":"conflict","2.4.8-p2":"conflict","2.4.8-p3":"conflict","2.4.8-p4":"conflict","2.4.8-p5":"conflict","2.4.9":"conflict"},"affectedVersions":[],"components":["magento/framework"],"files":[{"path":"lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/ElementFactory.php","change":"modified","package":"magento/framework"}],"stripped":{"tests":[],"docs":[],"outsideCode":[]},"linesChanged":24,"mergeBatched":false,"excluded":null,"sections":{"description":null,"stepsToReproduce":null,"expectedResult":null,"actualResult":null,"source":null},"signatures":[],"labels":{"area":["Framework"],"component":["Framework/Setup"],"priority":"P2","severity":null,"reportedOn":["2.4.x"]},"categories":[],"triage":{"model":"@cf/cloudflare/clef","requestHash":"80965d0e4a60ebbddb435160d42dd5a89b5d941d17839a2ea6a8beba68ac6b52","isBugfix":0.8838,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.947,"feature":0.0165,"refactor":0.0205,"tests_only":0.0056,"docs_only":0.005,"dependency":0.0054},"confidence":0.8771},"scope":{"score":0.6947,"probabilities":{"0":0.403,"1":0.4993,"2":0.0977},"confidence":0.1319},"risk":{"score":0.3099,"probabilities":{"0":0.7646,"1":0.1608,"2":0.0746},"confidence":0.4241},"area":{"choice":"framework","probabilities":{"catalog":0.007,"checkout":0.0057,"customer":0.004,"admin":0.0093,"graphql_api":0.004,"framework":0.9534,"frontend":0.0054,"other":0.0112},"confidence":0.8964},"securityRelevant":0.0048,"reportedVersion":{"choice":"unspecified","probabilities":{"2.4.0":0.0036,"2.4.0-p1":0.0036,"2.4.1":0.004,"2.4.1-p1":0.004,"2.4.2":0.0065,"2.4.2-p1":0.0057,"2.4.2-p2":0.0071,"2.4.3":0.0118,"2.4.3-p1":0.0115,"2.4.3-p2":0.0134,"2.4.3-p3":0.0061,"2.4.4":0.0134,"2.4.4-p1":0.008,"2.4.4-p10":0.006,"2.4.4-p11":0.0071,"2.4.4-p12":0.0061,"2.4.4-p13":0.0061,"2.4.4-p14":0.0077,"2.4.4-p15":0.0047,"2.4.4-p16":0.0061,"2.4.4-p17":0.005,"2.4.4-p18":0.0043,"2.4.4-p2":0.0023,"2.4.4-p3":0.0027,"2.4.4-p4":0.0028,"2.4.4-p5":0.0035,"2.4.4-p6":0.0041,"2.4.4-p7":0.0039,"2.4.4-p8":0.0042,"2.4.4-p9":0.0039,"2.4.5":0.0163,"2.4.5-p1":0.0137,"2.4.5-p10":0.0082,"2.4.5-p11":0.0125,"2.4.5-p12":0.0089,"2.4.5-p13":0.0076,"2.4.5-p14":0.0084,"2.4.5-p15":0.0068,"2.4.5-p16":0.008,"2.4.5-p17":0.0067,"2.4.5-p2":0.0037,"2.4.5-p3":0.0058,"2.4.5-p4":0.0051,"2.4.5-p5":0.0052,"2.4.5-p6":0.0072,"2.4.5-p7":0.0066,"2.4.5-p8":0.006,"2.4.5-p9":0.0049,"2.4.6":0.0334,"2.4.6-p1":0.0233,"2.4.6-p10":0.0106,"2.4.6-p11":0.0163,"2.4.6-p12":0.0119,"2.4.6-p13":0.0136,"2.4.6-p14":0.0132,"2.4.6-p15":0.01,"2.4.6-p2":0.0049,"2.4.6-p3":0.0085,"2.4.6-p4":0.0095,"2.4.6-p5":0.0086,"2.4.6-p6":0.0102,"2.4.6-p7":0.0101,"2.4.6-p8":0.007,"2.4.6-p9":0.0071,"2.4.7":0.0231,"2.4.7-p1":0.0211,"2.4.7-p10":0.0111,"2.4.7-p2":0.0101,"2.4.7-p3":0.0165,"2.4.7-p4":0.0144,"2.4.7-p5":0.0143,"2.4.7-p6":0.0192,"2.4.7-p7":0.0158,"2.4.7-p8":0.0123,"2.4.7-p9":0.0084,"2.4.8":0.0268,"2.4.8-p1":0.0249,"2.4.8-p2":0.0251,"2.4.8-p3":0.0212,"2.4.8-p4":0.0168,"2.4.8-p5":0.0145,"2.4.9":0.0205,"unspecified":0.1649},"confidence":0.0274},"backportWorthy":{"score":1.5243,"probabilities":{"0":0.0974,"1":0.2808,"2":0.6218},"confidence":0.2124}},"curated":{"title":"Fixes db_schema.xml comment=\"\" making setup:db:status always report changes","description":"A db_schema.xml declaration with comment=\"\" will always be flagged as needing to make changes, as the database has no concept of a null versus empty string comment. This breaks zero downtime deployments using setup:db:status. ElementFactory::create now uses removeEmptyComments to remove a comment that is empty after trim.","categories":[],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":null},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-40242 details"}