Skip to content

Sync the 2.4.9 line with upstream develop (bc7899a) - #41

Merged
jeanmarcos-dev merged 178 commits into
dist-2.4.9from
integrate/2.4.9-upstream-develop-sync
Aug 3, 2026
Merged

Sync the 2.4.9 line with upstream develop (bc7899a)#41
jeanmarcos-dev merged 178 commits into
dist-2.4.9from
integrate/2.4.9-upstream-develop-sync

Conversation

@jeanmarcos-dev

Copy link
Copy Markdown
Owner

Merges magento/inventory@develop (bc7899a, 2026-07-30) into the 2.4.9 line, bringing the
distribution back in sync with upstream and turning the next sync into a plain
git merge upstream/develop instead of another manual audit.

The merge-base was b3fba80 (PR magento#703, 2026-04-28), 176 commits behind. Most of that range is
MFTF coverage (ACQE-*) and Adobe's own PR Quality Gates tooling; the functional delta is five
tickets.

Upstream fixes this brings in

  • ACP2E-4349 — drops the pinned queue="…" attribute from the <publisher> entries in
    InventoryCatalog, InventoryIndexer and InventorySales. This reverts AC-14558
    (RabbitMQ → ActiveMQ migration). The attribute is read only by module-stomp
    (Model/Publisher.php, Model/MassPublisher.php, both $publisher->getQueue() ?: $topicName),
    so it is inert for AMQP and the MySQL queue. For the seven MSI topics the destination does not
    change either, since every consumer declares a queue named after its topic; the only effective
    change is on the three async.V1.inventory.bulk-product-source-*.POST topics under ActiveMQ.
  • ACP2E-5003GetStockIdForCurrentWebsite::execute() no longer propagates
    NoSuchEntityException when ?store= carries an unknown code, falling back to the current
    store. That path is hit by the category listing stock plugins, the GraphQL stock-status and
    only-x-left resolvers, and cart merging.
  • ACP2E-4741InventoryGroupedProductIndexer/Indexer/SiblingProductsProvider now filters
    catalog_product_link by link_type_id = LINK_TYPE_GROUPED, so related, up-sell and
    cross-sell links stop being treated as grouped children. The grouped SelectBuilder already
    applied that filter; only the sibling provider was missing it.
  • ACP2E-4765 — the pickup location address now resolves its region by region_id when one is
    set, instead of loadByName, which broke after a Directory subdivision rename.
  • ACP2E-4973 — clears redundant in-store pickup data when the shipping carrier changes,
    scoped to the GraphQL area.

ACP2E-4805 and ACP2E-4866 were already cherry-picked here and their files are byte-identical
to upstream, so the merge is a no-op for them.

Conflict resolution

Seven files conflicted:

File Resolution
InventoryBundleProductIndexer/Indexer/SelectBuilder.php Trailing whitespace only; kept ours, ->order('sku ASC') untouched
InventoryConfigurableProductIndexer/Indexer/SelectBuilder.php Kept $enabledChildIsSalable over upstream's MAX(stock.is_salable), kept $eavConfig, and removed a $manageStock block the auto-merge had duplicated
CompositeProductReindexOnNonDefaultStockTest.php, IsConfigurableProductSalableOnNonDefaultStockTest.php Both add/add. Our copies were byte-identical to the upstream blobs of the commits they were picked from, so upstream's newer versions (real secondary website via ScopeFixture/WebsiteFixture) win
InventoryConfigurableProductIndexer/composer.json, InventoryGroupedProductIndexer/composer.json Upstream only added inventory-configuration-api, already present and pinned here; kept our pinned block
InventoryInStorePickupQuoteGraphQl/composer.json Added module-checkout: 100.4.* and module-inventory-in-store-pickup-shipping-api: 1.1.* with this distribution's pinned constraints

The CartManagementPlugin half of ACP2E-4741 was deliberately not applied: it patches
aroundPlaceOrder to fall back from cartRepository->getActive() to get(), and this fork
rewrote that plugin to aroundSubmit(QuoteManagement, callable, Quote, $orderData), which
receives the quote directly and never queries the repository.

CI change

The merge brings .github/scripts/check_copyright_pr.php, a CLI script that legitimately uses
echo/exit and therefore fails the Magento2 standard. The QA gate now excludes .github/ from
its file scan, in both dist-qa.yml and dist-qa-local.sh — the gate covers distributed module
code, not CI tooling inherited from upstream.

Upstream's pr-quality-gates.yml is kept as-is. It is guarded by
if: vars.PR_QA_ENABLED_JOBS != '', which is unset here, so it stays skipped; deleting it would
create permanent divergence and reintroduce a conflict on every future sync.

Verification

Nothing owned by this fork changed. A per-file check over the 314 paths touched only by the fork
reports 0 altered, 0 lost and 0 resurrected; module packaging is unchanged at 74 modules and 148
replace entries.

Run against a real Magento 2.4.9 install with this branch deployed:

  • setup:di:compile — clean
  • Source-level reservations e2e — 25/25 checks pass (per-source split, cross-stock, shipment,
    cancellation, credit memo, partial shipment, flag-off regression, mid-flight toggle)
  • Cross-stock concurrency harness — 20 rounds, exactly one successful order per round,
    0 oversells, 0 deadlocks
  • Reservation-path concurrency — 8 workers, 400 place/compensate operations, 0 errors, and every
    (order, source) group balanced
  • QA gate (php-lint, phpcs Magento2, phpmd) — pass
  • Unit suite — 377 tests, the single failure (GetChildrenSkusOfParentSkusTest::testExecute)
    reproduces identically on dist-2.4.9 without this merge and is caused by array keys preserved
    by array_unique

Three in-store-pickup and source-deduction unit tests abort under PHPUnit 12.5.31 when
createPartialMock is applied to interfaces carrying extension attributes. The same abort
reproduces on the pre-merge tree, and the test files are byte-identical to upstream.

The perf-toolkit leg of the stress suite (concurrent checkouts over 300 multi-source SKUs) was not
run: that dataset does not exist in the 2.4.9 database. Real concurrent checkout behaviour is
covered by the cross-stock harness above; what is missing is scale.

dhorytskyi and others added 30 commits January 3, 2026 16:13
…tals-information, estimate-shipping-modules)
…tals-information, estimate-shipping-modules)
…tals-information, estimate-shipping-modules)
…tals-information, estimate-shipping-modules)
…tals-information, estimate-shipping-modules)
…tals-information, estimate-shipping-modules)
…20_flowers

[Support Tier-4 flowers] 04-20-2026 Regular delivery of bugfixes and improvements
Karishmathakare19 and others added 27 commits June 22, 2026 22:45
… which skipped for same reason

- Refactorfed the test
… which skipped for same reason

- Refactorfed the test
… which skipped for same reason

- Refactored the test
… which skipped for same reason

- Removed skipped tests
…ment-v61

Ninjas Functional Mainline deployment PR
…ment-version44

Ninjas Functional Mainline deployment PR
…16_moyseyenko

[Support Tier-4 moyseyenko] 07-16-2026 Regular delivery of bugfixes and improvements
…30_zota

[Support Tier-4 zota] 07-30-2026 Regular delivery of bugfixes and improvements
@jeanmarcos-dev
jeanmarcos-dev merged commit 4797758 into dist-2.4.9 Aug 3, 2026
2 checks passed
@jeanmarcos-dev
jeanmarcos-dev deleted the integrate/2.4.9-upstream-develop-sync branch August 3, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.