Adrien de Peretti and Oli Juhl
0f835381e9
fix(product): Update performance issue ( #14150 )
...
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-12-01 16:45:18 +01:00
Adrien de Peretti
bbf294fc31
chore: Update medusa exec worker mode ( #14145 )
...
* chore: Update medusa exec worker mode
* chore: Update medusa exec worker mode
* Create cuddly-numbers-camp.md
2025-11-30 19:44:54 +01:00
Adrien de Peretti
9d1f09ac7b
chore(): Update posthog ( #14144 )
...
* chore(): Update posthog
* chore(): Update posthog
2025-11-27 13:24:15 +01:00
Adrien de Peretti
91499081f4
chore(): Promotion auto managed joiner config ( #14115 )
...
* chore(): Promotion auto managed joiner config
* Create light-trainers-tie.md
* chore(): align tests expectactions
2025-11-27 12:45:17 +01:00
Adrien de Peretti
6057afdfaa
chore(): Add new regression tests to the remote joiner ( #14119 )
...
* Add tests
* Add tests
* Add tests
2025-11-27 09:31:25 +01:00
Adrien de Peretti
1cfc88ee55
chore(): Improve product list when there is a single sales channel ( #14082 )
...
FIXES https://github.com/medusajs/medusa/issues/13976
**What**
Before applying the sales channel link filter, check if there is a single sales channel or many, if will add a bit of overhead but marginal compare to the improvement for big catalog with single sales channel
---
> [!NOTE]
> Optimizes store products listing by conditionally skipping sales channel link filtering when the index can be used or only one sales channel exists.
>
> - **Store API – `products`** (`packages/medusa/src/api/store/products/middlewares.ts`):
> - Adds `applyMaybeLinkFilterIfNecessary` middleware:
> - Skips link filtering when `IndexEngine` is enabled and no tag/category filters are present.
> - Queries `sales_channels` count; if only one exists, removes `sales_channel_id` filter and proceeds.
> - Integrates this middleware into `GET /store/products` before default filters; `GET /store/products/:id` remains unchanged with `maybeApplyLinkFilter`.
> - **Release**:
> - Adds patch changeset for `@medusajs/medusa`.
>
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot ) for commit 8a0b024ea1bc9696f350f34fa77df321e5ecf553. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot ).</sup>
2025-11-25 10:45:38 +00:00
Adrien de Peretti
113f200a99
chore(event-bus-*): Do not emit if no subscribers: ( #14084 )
...
* chore(event-vus-*): Do not emit if no subscribers:
* Create curly-apricots-double.md
* add tests
* align tests
2025-11-24 09:36:52 +01:00
Adrien de Peretti
6c3ec528f1
fix(): Workflow engine redis worker instance in worker mode ( #14099 )
...
* fix(): Workflow engine redis worker instance in worker mode
* Create wicked-tips-buy.md
2025-11-24 09:31:36 +01:00
Adrien de Peretti
beb91d88a2
chore(): Update glob package ( #14083 )
...
* chore(): Update glob package
* Create fresh-needles-wave.md
2025-11-19 21:53:32 +01:00
Adrien de Peretti
62d103b44f
fix(payment): Double idempotent capture called with auto capture beha… ( #14073 )
...
* fix(payment): Double idempotent capture called with auto capture behaviour
* Create sweet-peaches-dress.md
* naming
* feedback
* naming
2025-11-18 10:50:50 +01:00
Adrien de Peretti
6746fecd72
chore(order): custom display id ( #14024 )
...
* chore(order): Accept a custom display generator option
* chore(order): Accept a custom display generator option
* wip
* wip
* finalize
* Create tricky-olives-battle.md
* fields
* changeset
* update integration tests
* update migrations
* fix changeset
2025-11-18 10:17:46 +01:00
Adrien de Peretti
1ea932a56f
fix(): Identify step that should require a save on checkpoint ( #14037 )
...
* fix(): Identify step that force save checkpoint
* Create sour-peas-provide.md
2025-11-17 12:47:57 +01:00
Adrien de Peretti
c2c3ad5ba5
chore(): Upgrade vit to non vulnerable one ( #14042 )
...
* chore(): Upgrade vit to non vulnerable one
* Create eight-dogs-allow.md
* remove unused global
* remove unused global
* remove unused global
2025-11-13 09:18:58 +01:00
Adrien de Peretti
657a16c462
chore(): Remove lodash.set entirely ( #14041 )
...
* chore(): Remove lodash.set entirely
* Create dull-balloons-sneeze.md
* chore(): Remove lodash.set entirely
* chore(): Remove lodash.set entirely
2025-11-13 09:18:43 +01:00
Adrien de Peretti
e59cdae336
fix(): Proper schema usage when running migrations ( #14036 )
...
* fix(): Proper schema usage when running migrations
* Create thick-pugs-dance.md
2025-11-12 15:56:50 +01:00
Adrien de Peretti
7e3eb6e413
chore: cleanup/improve bootstrap ( #14023 )
...
* chore: cleanup/improve bootstrap
* chore: cleanup/improve bootstrap
* Create few-guests-visit.md
2025-11-10 14:35:20 +01:00
Adrien de Peretti and Carlos R. L. Rodrigues
9fdc00350a
fix(): Lock process payment to prevent ingesting payment processing t… ( #13977 )
...
* fix(): Lock process payment to prevent ingesting payment processing twice
* Create brave-lamps-beg.md
* fix(): Lock process payment to prevent ingesting payment processing twice
* fix changeset
* resolve conflicts
---------
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-11-07 10:14:56 +01:00
adrien2p
3095b63784
try improve snapshot action speed and fix changeset
2025-11-05 18:45:58 +01:00
adrien2p
b010c4be1a
try improve snapshot action speed
2025-11-05 18:42:23 +01:00
adrien2p
fd68772d81
try improve snapshot action speed
2025-11-05 18:37:26 +01:00
Adrien de Peretti
9d9d0397a8
fix(): Index integration tests flackyness ( #13953 )
...
* fix(): Index integration tests flackyness
* fix
* Create twenty-eels-remain.md
* fix
* fix
* fix
* fix
* finalize
* finalize
* finalize
* finalize
* finalize
* finalize
* chore: empty commit
* finalize
* finalize
* chore: empty commit
* finalize
* finalize
2025-11-05 10:40:12 +01:00
Adrien de Peretti
48ab55afcc
chore(): Update root dev deps and Stabilize package integration tests pipeline ( #13952 )
...
* chore(): Stabilize package integration tests pipeline
* manage deps
* action name
2025-11-04 09:52:09 +01:00
Adrien de Peretti
afb40d437b
chore(): Cleanup and organize deps ( #13940 )
...
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* Create lucky-poets-scream.md
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* chore(): Cleanup and organize deps
* dedupe snapshot this build
* split into 4 shard
* re configure packages integration tests
* re configure packages integration tests
* re configure packages integration tests
* re configure packages integration tests
* update scripts
* update scripts
* update scripts
* update scripts
* update scripts
* update scripts
* update scripts
* update scripts
* reduce shard for packages
2025-11-03 19:06:37 +01:00
Adrien de Peretti
37563987b8
chore(): Fix dependencies ( #13932 )
2025-11-02 17:46:46 +01:00
Adrien de Peretti and Carlos R. L. Rodrigues
224ab39a81
chore(): Update dependencies usage ( #13910 )
...
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* fix for wxios 1.6
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* push scripts
* update build concurrency
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* chore(): Update dependencies usage
* fixes
* update yarn
* fixes
* fix script
* Create heavy-suns-tickle.md
* update changeset
---------
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-10-31 16:44:14 +01:00
Adrien de Peretti
4e5b318583
fix(): update Integration test enabling index when not necessary ( #13904 )
...
* fix(): update Integration test enabling index when not necessary
* fix
2025-10-31 15:51:26 +01:00
Adrien de Peretti
66bbe39a8e
chore(): Throw on migration up/down fail ( #13911 )
...
* chore(): Throw on migration up/down fail
* Create nine-ways-teach.md
2025-10-30 16:50:13 +01:00
Adrien de Peretti
6d7ba778f5
chore(): Generate migrations with correct mikro orm import path ( #13893 )
...
* chore(): Generate migrations with correct mikro orm import path
* Create shy-melons-jog.md
2025-10-30 09:04:36 +01:00
Adrien de Peretti and Oli Juhl
0f79f22ebc
fix(pricing): price list prices perf issues ( #13899 )
...
* update package
* fix(pricing): update price list prices perf issues
* Create lemon-clocks-sing.md
* fix(pricing): update price list prices perf issues
* fix(pricing): update price list prices perf issues
* update package
* update package
* improvements
* remove unnecessary comments
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-10-29 19:50:33 +01:00
Adrien de Peretti
85b1f3d43a
feat(index): Add http/module api to interact with the index engine ( #13869 )
...
* feat(index): Add support to trigger sync manually
* feat(index): Add API route to interact with
* feat(index): Add API route to interact with
* feat(index): Add API route to interact with
* test(): Add http integration tests
* Create weak-elephants-reply.md
2025-10-28 20:31:39 +01:00
Adrien de Peretti
d51ae2768b
chore(workflow-engine-*): cleanup and improvements ( #13789 )
...
**What**
Cleanup recent work on workflows
2025-10-23 10:50:24 +00:00
Adrien de Peretti
2d1d51a2af
fix(test-utils): Duplicated subscribers re insertion ( #13798 )
...
* fix
* Create pink-boats-type.md
2025-10-21 16:00:48 +02:00
516f5a3896
fix: workflow async concurrency ( #13769 )
...
* executeAsync
* || 1
* wip
* stepId
* stepId
* wip
* wip
* continue versioning management changes
* fix and improve concurrency
* update in memory engine
* remove duplicated test
* fix script
* Create weak-drinks-confess.md
* fixes
* fix
* fix
* continuation
* centralize merge checkepoint
* centralize merge checkpoint
* fix locking
* rm only
* Continue improvements and fixes
* fixes
* fixes
* hasAwaiting will be recomputed
* fix orchestrator engine
* bump version on async parallel steps only
* mark as delivered fix
* changeset
* check partitions
* avoid saving when having parent step
* cart test
---------
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com >
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-10-20 15:29:19 +02:00
Adrien de Peretti and Oli Juhl
c54c5ed6de
chore(): improve cart operations + Mikro orm 6.4.16 ( #13712 )
...
* chore(): Mikro orm 6.4.16
* Create small-ghosts-draw.md
* update config
* update config
* fix delete
* update config
* update workflows
* order improvements
* test pricing quuery
* test pricing quuery
* configurable connection options
* configurable connection options
* configurable connection options
* Update packages/modules/pricing/src/models/price.ts
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-10-10 08:58:19 +02:00
Adrien de Peretti and Oli Juhl
0cbd9f0bc3
chore(): Improve caching rollout ( #13702 )
...
* chore(): Improve caching rollout
* Create bright-cobras-complain.md
* chore(): Improve caching rollout
* downgrade orm to 6.4.3
* chore(): Improve caching rollout
* chore(): Improve caching rollout
* chore(): Improve caching rollout
* chore(): Improve caching rollout
* chore(): Improve caching rollout
* fix
* update changeset
* update modules definition
* update engine tests
* update engine tests
* improve integration
* improve integration
* gracefully disconnect
* update test
* another attempt
* another attempt
* fix workflow storage
* fix remote joiner
* fix remote joiner
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-10-08 17:44:00 +02:00
Adrien de Peretti
b43b285125
fix(): Workflow save to db + index integration instability ( #13707 )
...
**What**
- Fix index integration tests instability
- Fix workflow engine storage save to db
2025-10-08 08:45:15 +00:00
Adrien de Peretti
51859c38a7
chore(): Default caching configuration and gracefull redis error handling ( #13663 )
...
* chore(): Default caching configuration and gracefull redis error handling
* Create odd-moons-crash.md
* chore(): Default caching configuration and gracefull redis error handling
* fixes
* address feedback
* revert(): Test utils imit module fix
* reconnect
* reconnect
* reconnect
2025-10-06 17:57:11 +02:00
Adrien de Peretti
62d340b897
fix(): caching better identify default provider ( #13675 )
2025-10-03 21:04:27 +02:00
Adrien de Peretti
4165172145
chore(): Downgrade mikro orm (performance regression) ( #13680 )
...
**What**
After lot of investigation, we finally found one of our performance regerssion point (see [here](https://github.com/mikro-orm/mikro-orm/issues/6905 )), this pr downgrade mikro orm and move the strategy back to select in where needed
2025-10-03 15:31:40 +00:00
Adrien de Peretti
d58462c9c9
chore(): Caching improvements ( #13660 )
...
* chore(): Caching improvements
* Create proud-windows-sleep.md
* naming
* fix tests
* address feedback
2025-10-03 10:05:44 +02:00
Adrien de Peretti
8734866eb1
fix(): Transform map ( #13655 )
...
**What**
It seems that for some reason the weak map fail in some scenario, but after investigation, the usage of map would not have a bad impact as it will be released after the Distributed transaction if finished. Therefore, falling back to Map instead
FIXES https://github.com/medusajs/medusa/issues/13654
NOTE: Waiting for the user feedback as he is also using node 18. We also use the exact same pattern in all our core flows without issues 🤔
2025-10-02 15:54:11 +00:00
Adrien de Peretti
76aa4a48b3
fix(): workflows concurrency ( #13645 )
2025-10-02 11:11:38 -03:00
Adrien de Peretti
8fb7e04be7
fix(): Fulfillment custom schema error on provider ( #13656 )
2025-10-02 14:01:54 +02:00
Adrien de Peretti
02b6d01382
chore(): Add instrumentation to deps ( #13646 )
...
* chore(): Add instrumentation to deps
* deps
* Create two-bikes-compare.md
2025-10-02 11:29:26 +02:00
Adrien de Peretti and Carlos R. L. Rodrigues
b9d6f73320
Feat(): distributed caching ( #13435 )
...
RESOLVES CORE-1153
**What**
- This pr mainly lay the foundation the caching layer. It comes with a modules (built in memory cache) and a redis provider.
- Apply caching to few touch point to test
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-09-30 16:19:06 +00:00
Adrien de Peretti
5b135a41fe
fix(): workflow engine migration issue ( #13629 )
...
**What**
The extension creation have been pushed by mistake
2025-09-30 15:41:09 +00:00
Adrien de Peretti
70d855bd1b
fix(): Module test runner lifecycle does not shutdown properly ( #13628 )
...
* fix(): Module test runner lifecycle does not shutdown properly
* Create late-feet-think.md
2025-09-30 17:06:05 +02:00
Adrien de Peretti
9c7c1d48c7
fix(): Pricing preference context loss ( #13626 )
...
**What**
The context reference is being mutated by the repository leading to an empty context. Also, the filter is built from the pricing context instead of pricing context -> context leading to always fetch all preferences all the time
2025-09-30 12:38:04 +00:00
Adrien de Peretti
fc67fd0b36
chore(utils): make upsert with replace more efficient ( #13580 )
...
PARTIALLY RESOLVES CORE-1156
**What**
Improve upsertWithReplace to batch as much as possible what can be batched. Performance of this method will be much greater specially for cases with maybe entities and batch (e.g we seen many cases where they bulk product with hundreds variants and options etc)
for example let take the following object:
- entity 1
- entity 2 []
- entity 3 []
- entity 2 []
- entity 3 []
here all entity 3 will be batched and all entity 2 will be batched
I ve also added a pretty detail test that check all the stage and what is batched or not with many comments so that it is less harder to consume and remember in the future
Also includes:
- mikro orm upgade (issues found and fixes)
- order module hooks fixes
**NOTE**
It was easier for now to do this instead of rewriting the different areas where it is being used, also, maybe it means that we will have closer performance to what we would expect to have natively
**NOTE 2**
Also fix the fact that integration tests of the core packages never ran 😂
2025-09-26 08:06:43 +00:00
Adrien de Peretti
5ea32aaa44
fix(): Cart workflow price calculation for different items but same variant ( #13511 )
...
RESOLVES CORE-1204
**What**
- Fix wrong price tier when multiple items are targetting the same variant
- fix type import from the wrong package
**Notes**
If you are struggling navigating the changes, you can focus on the following files:
```
integration-tests/http/__tests__/cart/store/cart.spec.ts
integration-tests/modules/__tests__/cart/store/cart.workflows.spec.ts
packages/core/core-flows/src/cart/steps/get-promotion-codes-to-apply.ts
packages/core/core-flows/src/cart/steps/get-variant-price-sets.ts
packages/core/core-flows/src/cart/workflows/add-to-cart.ts
packages/core/core-flows/src/cart/workflows/create-carts.ts
packages/core/core-flows/src/cart/workflows/get-variants-and-items-with-prices.ts
packages/core/core-flows/src/cart/workflows/refresh-cart-items.ts
packages/core/core-flows/src/order/workflows/add-line-items.ts
packages/core/core-flows/src/order/workflows/create-order.ts
```
2025-09-26 07:19:46 +00:00
Adrien de Peretti
543c9f7d0f
fix(utils): Query filters API should have nested optional props ( #13583 )
2025-09-23 17:40:37 +02:00
Adrien de Peretti
e39c472a84
Feat(): faster entity serializer ( #13564 )
...
**What**
Improve serialization further on complex entities to reduce bottleneck.
**Notes**
It might good at some point to integrate these improvements into mikro orm package 📦
**Load test**
The test is using autocanon and wrap the serializers call behind http end points.
Each product has 2 variants, 3 options and 3 options values.
autocanon is configured for 10 connections during 20 second and 1 pipelining. This is repeated for each configuration and each catch size.
🚀 Load Testing Serializers with Autocannon
================================================================================
====================================================================================================
🎯 TESTING 10 PRODUCTS
====================================================================================================
🖥️ Server started on port 57840
📊 Testing with 10 products per request
🔥 Load testing: MikroOrm
--------------------------------------------------
Requests/sec: 33.85
Avg Latency: 319.30ms
P90 Latency: 327.00ms
Throughput: 31.36 MB/s
Errors: 0
🔥 Load testing: Current
--------------------------------------------------
Requests/sec: 821.15
Avg Latency: 11.67ms
P90 Latency: 12.00ms
Throughput: 0.18 MB/s
Errors: 0
🔥 Load testing: Optimized
--------------------------------------------------
Requests/sec: 1286.75
Avg Latency: 7.25ms
P90 Latency: 7.00ms
Throughput: 37.31 MB/s
Errors: 0
📈 Load Testing Performance Comparison for 10 products:
--------------------------------------------------------------------------------------------------------------------------------------------
Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement
--------------------------------------------------------------------------------------------------------------------------------------------
MikroOrm 33.85 319.30 327.00 31.36 0 baseline
Current 821.15 11.67 12.00 0.18 0 24.3x
Optimized 1286.75 7.25 7.00 37.31 0 38.0x
🎯 Key Insights for 10 products:
• Optimized serializer handles 1.6x more requests/sec than Current
• Optimized serializer handles 38.0x more requests/sec than MikroOrm
• 37.9% lower latency compared to Current serializer
🔴 Server stopped for 10 products test
====================================================================================================
🎯 TESTING 100 PRODUCTS
====================================================================================================
🖥️ Server started on port 57878
📊 Testing with 100 products per request
🔥 Load testing: MikroOrm
--------------------------------------------------
Requests/sec: 3.69
Avg Latency: 3241.29ms
P90 Latency: 4972.00ms
Throughput: 35.04 MB/s
Errors: 0
🔥 Load testing: Current
--------------------------------------------------
Requests/sec: 87.45
Avg Latency: 117.20ms
P90 Latency: 116.00ms
Throughput: 0.02 MB/s
Errors: 0
🔥 Load testing: Optimized
--------------------------------------------------
Requests/sec: 143.56
Avg Latency: 70.62ms
P90 Latency: 72.00ms
Throughput: 42.22 MB/s
Errors: 0
📈 Load Testing Performance Comparison for 100 products:
--------------------------------------------------------------------------------------------------------------------------------------------
Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement
--------------------------------------------------------------------------------------------------------------------------------------------
MikroOrm 3.69 3241.29 4972.00 35.04 0 baseline
Current 87.45 117.20 116.00 0.02 0 23.7x
Optimized 143.56 70.62 72.00 42.22 0 38.9x
🎯 Key Insights for 100 products:
• Optimized serializer handles 1.6x more requests/sec than Current
• Optimized serializer handles 38.9x more requests/sec than MikroOrm
• 39.7% lower latency compared to Current serializer
🔴 Server stopped for 100 products test
====================================================================================================
🎯 TESTING 1,000 PRODUCTS
====================================================================================================
🖥️ Server started on port 57930
📊 Testing with 1000 products per request
🔥 Load testing: MikroOrm
--------------------------------------------------
Requests/sec: 0.00
Avg Latency: 0.00ms
P90 Latency: 0.00ms
Throughput: 0.00 MB/s
Errors: 10
🔥 Load testing: Current
--------------------------------------------------
Requests/sec: 0.00
Avg Latency: 0.00ms
P90 Latency: 0.00ms
Throughput: 0.00 MB/s
Errors: 20
🔥 Load testing: Optimized
--------------------------------------------------
Requests/sec: 13.79
Avg Latency: 792.94ms
P90 Latency: 755.00ms
Throughput: 41.47 MB/s
Errors: 0
📈 Load Testing Performance Comparison for 1000 products:
--------------------------------------------------------------------------------------------------------------------------------------------
Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement
--------------------------------------------------------------------------------------------------------------------------------------------
MikroOrm 0.00 0.00 0.00 0.00 10 NaNx
Current 0.00 0.00 0.00 0.00 20 NaNx
Optimized 13.79 792.94 755.00 41.47 0 Infinityx
🎯 Key Insights for 1000 products:
• Optimized serializer handles Infinityx more requests/sec than Current
• Optimized serializer handles Infinityx more requests/sec than MikroOrm
• -Infinity% lower latency compared to Current serializer
🔴 Server stopped for 1000 products test
======================================================================================================================================================
📊 COMPREHENSIVE AUTOCANNON LOAD TESTING ANALYSIS
======================================================================================================================================================
🚀 Autocannon Load Testing Scaling Analysis:
--------------------------------------------------------------------------------------------------------------------------------------------
Size RPS (M/O/Op) Avg Latency (M/O/Op) P90 Latency (M/O/Op) Throughput MB/s (M/O/Op) Speedup vs M (O/Op) Speedup vs O (Op)
--------------------------------------------------------------------------------------------------------------------------------------------
10 33.9/821.1/1286.8 319.3/11.7/7.3 327.0/12.0/7.0 31.4/0.2/37.3 24.3x/38.0x 1.6x
100 3.7/87.5/143.6 3241.3/117.2/70.6 4972.0/116.0/72.0 35.0/0.0/42.2 23.7x/38.9x 1.6x
1,000 0.0/0.0/13.8 0.0/0.0/792.9 0.0/0.0/755.0 0.0/0.0/41.5 NaNx/Infinityx Infinityx
🎯 Overall Load Testing Performance Summary:
📈 10 products:
• +56.7% more requests/sec vs Current (821.1 → 1286.8)
• +3701.3% more requests/sec vs MikroOrm (33.9 → 1286.8)
📈 100 products:
• +64.2% more requests/sec vs Current (87.5 → 143.6)
• +3790.5% more requests/sec vs MikroOrm (3.7 → 143.6)
📈 1000 products:
• +Infinity% more requests/sec vs Current (0.0 → 13.8)
• +Infinity% more requests/sec vs MikroOrm (0.0 → 13.8)
2025-09-22 17:02:10 +00:00
Adrien de Peretti and Oli Juhl
12a96a7c70
chore(): Move peer deps into a single package and re export from framework ( #13439 )
...
* chore(): Move peer deps into a single package and re export from framework
* WIP
* update core packages
* update cli and deps
* update medusa
* update exports path
* remove analyze
* update modules deps
* finalise changes
* fix yarn
* fix import
* Refactor peer dependencies into a single package
Consolidate peer dependencies into one package and re-export from the framework.
* update changeset
* Update .changeset/brown-cows-sleep.md
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
* rm deps
* fix deps
* increase timeout
* upgrade version
* update versions
* update versions
* fixes
* update lock
* fix missing import
* fix missing import
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-09-22 18:36:22 +02:00
Adrien de Peretti
9633e0676e
fix(workflow-engine-redis): module option queueName wrongly used ( #13570 )
...
https://github.com/medusajs/medusa/issues/13452
**What**
Wrongly used module option for redis workflow engine
2025-09-22 10:33:51 +00:00
Adrien de Peretti
92d30b28f4
chore(): remove ssl_mode from url and also use sslmode ( #13568 )
...
* chore(): remove ssl_mode from url and also use sslmode
* improve regexp
* chore(): remove ssl_mode from url and also use sslmode
* chore(): remove ssl_mode from url and also use sslmode
* Update SSL mode configuration in changeset
Removed 'ssl_mode' from URL and replaced it with 'sslmode'.
2025-09-22 12:11:43 +02:00
Adrien de Peretti
8ece06d8ed
chore(): upgrade mikro orm ( #13450 )
2025-09-19 21:39:18 +02:00
Adrien de Peretti
4c1c1dd4c0
chore(): Further improve promotions computation ( #13556 )
...
* chore(): Further improve promotions
* chore(): Further improve promotions
* chore(): Further improve promotions
* chore(): Further improve promotions
* chore(): Further improve promotions
* Create lazy-lemons-occur.md
* chore(): Further improve promotions
* WIP
* fix
* improve:
* fix attribute tests
* fix tests
* union
2025-09-19 21:34:35 +02:00
Adrien de Peretti
cb716856b6
fix(engine): Always create cleaner job ( #13557 )
...
RESOLVES CORE-1206
**What**
Instead of removing cleaner repeatable job and risk to remove it while other instances are still up, we always create it, since the id of a job is unique and we give one to the job, if already present it wont get added
2025-09-19 14:38:14 +00:00
Adrien de Peretti
4736c58da5
fix: Prevent promotion filtering to exceed psql limits ( #13540 )
...
* fix(): Prevent promotion filtering to exceed psql limits
* Create sour-rockets-grin.md
2025-09-18 17:50:10 +02:00
Adrien de Peretti
57897c232e
feat(): prefilter top level promotion rules in db ( #13524 )
...
* feat(): promotion pre filtering rule from db
* wip
* feat(): promotion pre filtering rule from db
* improve test readability
* resolve conflict
* fix automatic flag
* add index on attribute and operator
* add index on attribute and operator
* finalize
* cleanup
* cleanup
* cleanup
* cleanup
* Create purple-cars-design.md
* fixes
* fixes
* simplify filters
* fix filter
* fix filter
* further improvements
* fixes
* fixes
* fixes
* fix exclusion
* fix comment
* fix comment
2025-09-18 14:34:03 +02:00
Adrien de Peretti and Oli Juhl
c847f7d8bf
test(): Try to reproduce automatic promotion adjustments being applied twice ( #13533 )
...
**What**
Check that cart update will remove adjustment before creating a new one
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-09-17 18:24:27 +00:00
Adrien de Peretti
7de42a69a5
chore(): Shard unit tests jobs ( #13525 )
...
* chore(): Shard unit tests jobs
* pass with no tests
* try artifacts
* Revert "try artifacts"
This reverts commit 43663b46ea1fb2d3131182b733ab6e202ea83f1d.
2025-09-17 09:52:58 +02:00
Adrien de Peretti
25634b0382
test(): test dynamic max workers and improve CI ( #13516 )
...
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* test(): test dynamic max workers
* Clarify test description and improve CI
2025-09-16 11:11:03 +02:00
Adrien de Peretti
d9b11b9784
fix(medusa): Use the correct boolean validator ( #13510 )
2025-09-15 19:17:08 +02:00
Adrien de Peretti
ebf33bea43
fix(): pipeline missing suites ( #13457 )
...
* fix(): pipeline missing suites
* fix tax integration tests
* fix tax integration tests
* fix pipeline
* fix link integration tests
* remove old tests and move current one
* fix workflow execution integration tests
* fix tests and orchestrator
* Fix missing suites in pipeline
Remove integration-tests-modules from patch list.
2025-09-15 12:54:57 +02:00
Adrien de Peretti
29dca1ca48
fix(): update cart line item route fetching ( #13477 )
...
**What**
Remove cart fetching before workflow which fetch the cart as well
2025-09-11 10:12:13 +00:00
Adrien de Peretti
d828005354
chore(): improve inventory module ( #13463 )
...
RESOVLES CORE-1185
**What**
Reduce higher function call to reduce overserialization
2025-09-11 10:11:49 +00:00
Adrien de Peretti
58e20fa3fc
chore(): Add missing product status index ( #13475 )
...
**What**
Add missing product status index
2025-09-11 09:54:12 +00:00
Adrien de Peretti
8dd9ae3d35
chore(): Improve cart module ( #13472 )
...
* chore(): Improve cart module
* Create giant-spoons-crash.md
2025-09-11 11:50:58 +02:00
Adrien de Peretti
a4b72f9a21
fix(): prepare list query for list ( #13476 )
...
* fix(): prepare list query for list
* Create two-bulldogs-scream.md
2025-09-11 11:50:33 +02:00
Adrien de Peretti
de9a21a9da
chore(): Improve link indexes ( #13459 )
...
RESOLVE CORE-1183
**What**
Update link indexes to include deleted_at index constraint
2025-09-11 07:44:13 +00:00
Adrien de Peretti
0079464f32
fix(): temporary transform cached data ( #13467 )
...
**What**
Properly store key obj reference for weak map usage
2025-09-11 07:31:01 +00:00
Adrien de Peretti
0700a2448c
chore(): Remove extra manager fork ( #13458 )
...
RESOLVE CORE-1182
**What**
Remove unnecessary extra manager fork that need reconciliation under the hood
2025-09-11 07:29:47 +00:00
Adrien de Peretti
823a5c75ff
chore(): order module index and some impl details ( #13462 )
...
* order module fixes
* order module fixes
* fixes
* revert big number
* Create wet-wombats-rule.md
2025-09-11 09:02:38 +02:00
Adrien de Peretti
368c1d1e17
fix(): product image missing index ( #13466 )
...
**What**
Add product image imssing index
2025-09-10 17:01:04 +00:00
Adrien de Peretti
8e849074e4
fix(): missing events ( #13465 )
...
**What**
Add missing create event for sales channel and fix link module to properly emit detached event with the correct data shape
2025-09-10 15:41:20 +00:00
Adrien de Peretti and Oli Juhl
e8822f3e69
chore(): Module Internal Events ( #13296 )
...
* chore(): Ensure the product module emits all necessary events
* chore(): Ensure the product module emits all necessary events
* Update events tests
* more events and fixes
* more tests and category fixes
* more tests and category fixes
* Add todo
* update updateProduct_ event emitting and adjust test
* Adjust update products implementation to rely on already computed events
* rm unnecessary update variants events
* Fix formatting in changeset for product events
* refactor: Manage event emitting automatically (WIP)
* refactor: Manage event emitting automatically (WIP)
* chore(api-key): Add missing emit events and refactoring
* chore(cart): Add missing emit events and refactoring
* chore(customer): Add missing emit events and refactoring
* chore(fufillment, utils): Add missing emit events and refactoring
* chore(fufillment, utils): Add missing emit events and refactoring
* chore(inventory): Add missing emit events and refactoring
* chore(notification): Add missing emit events and refactoring
* chore(utils): Remove medusa service event handling legacy
* chore(product): Add missing emit events and refactoring
* chore(order): Add missing emit events and refactoring
* chore(payment): Add missing emit events and refactoring
* chore(pricing, util): Add missing emit events and refactoring, fix internal service upsertWithReplace event dispatching
* chore(promotions): Add missing emit events and refactoring
* chore(region): Add missing emit events and refactoring
* chore(sales-channel): Add missing emit events and refactoring
* chore(settings): Add missing emit events and refactoring
* chore(stock-location): Add missing emit events and refactoring
* chore(store): Add missing emit events and refactoring
* chore(taxes): Add missing emit events and refactoring
* chore(user): Add missing emit events and refactoring
* fix unit tests
* rm changeset for regeneration
* Create changeset for Medusa.js patch updates
Add a changeset for patch updates to multiple Medusa.js modules.
* rm unused product event builders
* address feedback
* remove old changeset
* fix event action for token generated
* fix user module events
* fix import
* fix promotion events
* add new module integration tests shard
* fix medusa service
* revert shard
* fix event action
* fix pipeline
* fix pipeline
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-09-10 14:37:38 +02:00
Adrien de Peretti
49a4caa62d
chore(): Cart fixes and opti ( #13455 )
...
**What**
- Remove overserialization
- fix wrong transaction usage
- call the right service instead of higher level methods
2025-09-10 10:53:36 +00:00
Adrien de Peretti
ac09b3cbef
Chore(): localised improvement to promotion module ( #13446 )
...
**What**
- Remove overserialization withing transaction and rely more on internal service or protected method instead which does not serialize and work with Infered entity type
- Slightly rework loop complexity
Overall, this gives a good spare of resources and time spent for serialization
2025-09-10 10:20:31 +00:00
Adrien de Peretti
d978749603
fix(): Prevent ci to fail if lock file does not exists ( #13456 )
2025-09-10 11:45:13 +02:00
Adrien de Peretti
0b55295fc7
Revert "chore(): Upgrade mikro orm ( #13390 )" ( #13449 )
...
This reverts commit a095245d71 .
2025-09-09 20:06:31 +02:00
Adrien de Peretti and Oli Juhl
a095245d71
chore(): Upgrade mikro orm ( #13390 )
...
* chore(): Upgrade mikro orm
* handle 'null' value for big number props
* 6.5.2
* remove only
* fix pricing module rule value
* switch select in strategy for balances
* revert to select in strategy for order module
* fix defining DML ManyToOne
* fix define relationship
* test fix
* more fixes
* change order strategy to balanced
* change order strategy to balanced
* prevent unnecessary manager fork
* revert generated www changes
* remove unnecessary changes
* Create real-cobras-deny.md
* address feedback
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-09-08 21:10:44 +02:00
Adrien de Peretti
fc4d5f0ac9
chore(): Workflow engine timers and notification improvements ( #13434 )
...
RESOLVES CORE-1177
**What**
main changes are:
- not blocking execution when notifying
- timers management
- race condition checks improvements
2025-09-08 18:19:55 +00:00
Adrien de Peretti
8e5c22a8e8
chore(): Improve workflows sdk tooling ( #13421 )
...
RESOLVES CORE-1171
**What**
- Reduced async overhead for objects with mixed sync/async properties
- Lower memory pressure from eliminated promise allocations
- Faster primitive value processing with early returns
- Better concurrency through selective batching of truly async operations
- Event loop friendly behavior preventing artificial delays
- Reduced memory allocation from eliminated duplicate processing
- Decreased GC pressure from WeakMap-based caching instead of map
**note**
Now, `resolveValue`always treat every resoltion as sync operation unless it is not, meaning we do not create promise overhead when not necessary and only when actually treating with promises
2025-09-08 16:24:10 +00:00
Adrien de Peretti
d7692100e7
chore(orchestration): add support for autoRetry, maxAwaitingRetries, retryStep ( #13391 )
...
RESOLVES CORE-1163
RESOLVES CORE-1164
**What**
### Add support for non auto retryable steps.
When marking a step with `maxRetries`, when it will fail it will be marked as temporary failure and then retry itself automatically. Thats the default behaviour, if you now add `autoRetry: false`, when the step will fail it will be marked as temporary failure but not retry automatically. you can now call the workflow engine run to resume the workflow from the failing step to be retried.
### Add support for `maxAwaitingRetries`
When setting `retyIntervalAwaiting` a step that is awaiting will be retried after the specified interval without maximun retry. Now you can set `maxAwaitingRetries` to force a maximum awaiting retry number
### Add support to manually retry an awaiting step
In some scenario, either a machine dies while a step is executing or a step is taking longer than expected, you can now call `retryStep` on the workflow engine to force a retry of the step that is supposedly stucked
2025-09-08 12:46:30 +00:00
Adrien de Peretti
2fe68a975b
chore(): Improve some cart operation flows to remove extraneous operations when not required ( #13418 )
...
RESOLVES CORE-1155
**What**
- prevent update payment collection worklow to fetch data and call steps when there is no payment collection
- prevent refresh Cart Shipping Methods Workflow to fetch data and call steps when there is no shipping methods
- update promotion step to remove extraneous module call
2025-09-07 12:52:36 +00:00
Adrien de Peretti
55a35e4721
chore(workflows-sdk, utils): Prevent unnecessary serialization ( #13413 )
...
* chore(workflows-sdk, utils): Prevent unnecessary serialization
* Create poor-mugs-cheat.md
2025-09-04 16:19:35 +02:00
Adrien de Peretti and Carlos R. L. Rodrigues
2b89510df3
chore(): only execute race execution checks and publish message only for async workflows ( #13396 )
...
* chore(): only execute race execution checks for async workflows
* chore(): workflow redis publish only for async flows
* Create cyan-gorillas-poke.md
* chore(): workflow redis publish only for async flows
* fix negative check
---------
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-09-04 09:12:09 +02:00
Adrien de Peretti and Carlos R. L. Rodrigues
bd206cb250
chore(): improve workflow engine storage ( #13345 )
...
* chore(workflow-engines): Improve race condition management
* cleanup
* cleanup
* chore(workflow-engines): Improve race condition management
* chore(workflow-engines): Improve race condition management
* chore(workflow-engines): heartbeat extend TTL
* Refactor chore title for workflow engine improvements
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* chore(): Improve workflow execution db interaction
* update tests
* revert idempotent
* add run_id index + await deletion
* improve saving
* comment
* remove only
---------
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-09-02 11:18:12 +02:00
Adrien de Peretti
b85a46e85b
chore(): faster serialization ( #13325 )
...
* chore(): Improve serialization perf
* better optimization with monomorphic approach and consistent object shape and array operations
* cleanup
* cleanup
* fix
* Create short-birds-help.md
* ref work
* ref work
* address feedback
* save intermediary changes
* save intermediary changes
2025-09-02 10:19:59 +02:00
Adrien de Peretti
ff152e7ace
fix(orchestration): Use the step definition max retries on set step failure ( #13319 )
...
* fix(orchestration): Use the step definition max retries on set step failure
* Create sweet-turkeys-wait.md
* allow to force permanent failure
* update changeset
2025-08-28 14:35:31 +02:00
Adrien de Peretti
fc49253273
feat(core, event-bus): Compensate emit event step utility ( #13281 )
...
* feat(core, event-bus): Compensate emit event step utility
* tests
* Update changeset to remove integration-tests-modules
Removed integration-tests-modules from changeset.
* revert test script
2025-08-25 15:08:09 +02:00
Adrien de Peretti
6264a6262b
fix: Cart operation should calculate item prices accounting for quantity ( #13251 )
...
* fix(): Cart operation should calculate item prices accounting for quantity
* fix(): Cart operation should calculate item prices accounting for quantity
* fix(): Cart operation should calculate item prices accounting for quantity
* fix when call warning
* fix tests and remove unnecessary object copy
* Create warm-dancers-allow.md
* fix update line item in cart workflow
* fix changeset
* update order flows
* fix cart spec integration tests
* improve create order workflow
* fixes and tests adjustments/improvements
* configurable useQueryGraphStep return type
* revert nullable take
* cleanup useQueryGraphStep
2025-08-25 09:38:58 +02:00
Adrien de Peretti and Oli Juhl
06ef9197f8
chore(pricing): Fix excessive db queries during price sets update ( #13258 )
...
* chore(pricing): Fix excessive db queries during price sets update
* chore(pricing): Fix excessive db queries during price sets update
* finalize upsert with replace of the rules
* fix limit
* Create quiet-pumpkins-hang.md
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com >
2025-08-22 10:51:50 +02:00
Adrien de Peretti
7b1debfe12
fix(wfe): add missing state in inmemory notify on run finished ( #12987 )
2025-07-18 11:25:02 +02:00
Adrien de Peretti
238e7d53c1
fix(wfe): should notify when finished + add state info ( #12982 )
2025-07-18 09:20:46 +02:00
Adrien de Peretti and Carlos R. L. Rodrigues
c5d609d09c
fix(orchestration): Prevent workf. cancellation to execute while rescheduling ( #12903 )
...
**What**
Currently, when cancelling async workflows, the step will get rescheduled while the current worker try to continue the execution leading to concurrency failure on compensation. This pr prevent the current worker from executing while an async step gets rescheduled
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com >
2025-07-16 14:44:09 +00:00
Adrien de Peretti
eb83954f23
chore(workflow-engine-*): Align event subscribers management ( #12976 )
...
* chore(workflow-engine-*): Align event subscribers management
* Create nervous-eels-build.md
2025-07-16 16:34:47 +02:00
Adrien de Peretti
2c2528a087
fix(core-flows): useQueryGraph util return type ( #12962 )
2025-07-15 19:34:23 -03:00
Adrien de Peretti
e9a33d0700
fix(orchestration): Handle expected lifecycle errors ( #12886 )
...
* fix(orchestration): Handle expected lifecycle errors
* fix(orchestration): Handle expected lifecycle errors
* Create fast-ears-own.md
2025-07-06 23:11:03 +02:00