From the eShop (AdventureWorks), mapped as three services architecture map
A retired catalog item breaks Cart Menu's basket load everywhere
Cart Menu loads the basket through Basket State, which looks up every basket line with catalogItems[item.ProductId] and throws when a product is missing from the catalog. Cart Menu's startup handler catches only an unauthorized error, so that lookup failure is never caught. Basket State caches the failing call, so the bag badge stays broken on every page until the basket itself changes.
Impact: One retired product leaves the bag badge failing on every page the shopper visits, not just the one where the stale item was added, until they change the basket.
Recommendation (medium effort): Have Basket State's basket load skip or flag a line whose product is no longer in the catalog instead of indexing straight into the lookup, and stop caching a failed load in _cachedBasket so a retry can succeed.
The trail
Open on the mapMore from this board
- Identified Command swallows a failed CreateOrder and still reports success on retry
- An unreachable embedding model blocks product price changes
- Failed catalog price-change events are marked failed and never retried
- Order Queries reads straight from the write side's OrderingContext, not a separate read model
- RabbitMQ status handlers skip the idempotency check HTTP commands get
- Awaiting-validation stock check confirms orders for unknown product ids
- Order-status updates only reach shoppers on the WebApp process that handled the event
- A rejected order still empties the shopper's bag