From 0079464f32052ebc225e5a795be9cb018a3a6aeb Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Thu, 11 Sep 2025 09:31:01 +0200 Subject: [PATCH] fix(): temporary transform cached data (#13467) **What** Properly store key obj reference for weak map usage --- .changeset/ninety-years-float.md | 6 ++++++ .../src/transaction/distributed-transaction.ts | 12 ++++++------ .../src/utils/composer/transform.ts | 17 ++++++++++++++--- 3 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 .changeset/ninety-years-float.md diff --git a/.changeset/ninety-years-float.md b/.changeset/ninety-years-float.md new file mode 100644 index 0000000000..44cd2da7e8 --- /dev/null +++ b/.changeset/ninety-years-float.md @@ -0,0 +1,6 @@ +--- +"@medusajs/orchestration": patch +"@medusajs/workflows-sdk": patch +--- + +fix(): temporary transform cached data diff --git a/packages/core/orchestration/src/transaction/distributed-transaction.ts b/packages/core/orchestration/src/transaction/distributed-transaction.ts index b6096f6369..1f05140b5e 100644 --- a/packages/core/orchestration/src/transaction/distributed-transaction.ts +++ b/packages/core/orchestration/src/transaction/distributed-transaction.ts @@ -311,16 +311,16 @@ class DistributedTransaction extends EventEmitter { await DistributedTransaction.keyValueStore.clearStepTimeout(this, step) } - public setTemporaryData(key: string, value: unknown) { - this.#temporaryStorage.set({ key }, value) + public setTemporaryData(key: { key: string }, value: unknown) { + this.#temporaryStorage.set(key, value) } - public getTemporaryData(key: string) { - return this.#temporaryStorage.get({ key }) + public getTemporaryData(key: { key: string }) { + return this.#temporaryStorage.get(key) } - public hasTemporaryData(key: string) { - return this.#temporaryStorage.has({ key }) + public hasTemporaryData(key: { key: string }) { + return this.#temporaryStorage.has(key) } /** diff --git a/packages/core/workflows-sdk/src/utils/composer/transform.ts b/packages/core/workflows-sdk/src/utils/composer/transform.ts index f39a8a629f..f304277306 100644 --- a/packages/core/workflows-sdk/src/utils/composer/transform.ts +++ b/packages/core/workflows-sdk/src/utils/composer/transform.ts @@ -167,6 +167,7 @@ export function transform( const ret = { __id: uniqId, __type: OrchestrationUtils.SymbolWorkflowStepTransformer, + __temporary_storage_key: null as { key: string } | null, } const returnFn = async function ( @@ -175,9 +176,16 @@ export function transform( ): Promise { if ("transaction" in transactionContext) { const temporaryDataKey = `${transactionContext.transaction.modelId}_${transactionContext.transaction.transactionId}_${uniqId}` + ret.__temporary_storage_key ??= { key: temporaryDataKey } - if (transactionContext.transaction.hasTemporaryData(temporaryDataKey)) { - return transactionContext.transaction.getTemporaryData(temporaryDataKey) + if ( + transactionContext.transaction.hasTemporaryData( + ret.__temporary_storage_key + ) + ) { + return transactionContext.transaction.getTemporaryData( + ret.__temporary_storage_key + ) } } @@ -195,7 +203,10 @@ export function transform( } if ("transaction" in transactionContext) { - const temporaryDataKey = `${transactionContext.transaction.modelId}_${transactionContext.transaction.transactionId}_${uniqId}` + const temporaryDataKey = ret.__temporary_storage_key! + if (!temporaryDataKey) { + return finalResult + } transactionContext.transaction.setTemporaryData( temporaryDataKey,