From 02df25c450a0a384a32d0815d8a2faec7562a8ae Mon Sep 17 00:00:00 2001 From: Eugene Date: Mon, 27 Jan 2025 13:29:14 +0300 Subject: [PATCH] fix(editor): Add notice when user hits the limit for execution metadata item length (#12676) --- .../utils/__tests__/execution-metadata.test.ts | 11 ++++------- .../utils/execution-metadata.ts | 4 ++-- .../nodes/ExecutionData/ExecutionData.node.ts | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/core/src/execution-engine/node-execution-context/utils/__tests__/execution-metadata.test.ts b/packages/core/src/execution-engine/node-execution-context/utils/__tests__/execution-metadata.test.ts index c673a2fcfe..b08e38da5b 100644 --- a/packages/core/src/execution-engine/node-execution-context/utils/__tests__/execution-metadata.test.ts +++ b/packages/core/src/execution-engine/node-execution-context/utils/__tests__/execution-metadata.test.ts @@ -205,15 +205,12 @@ describe('Execution Metadata functions', () => { }, } as IRunExecutionData; - setWorkflowExecutionMetadata( - executionData, - 'test1', - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab', - ); + const longValue = 'a'.repeat(513); + + setWorkflowExecutionMetadata(executionData, 'test1', longValue); expect(metadata).toEqual({ - test1: - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', + test1: longValue.slice(0, 512), }); }); }); diff --git a/packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts b/packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts index 5e7c4954d6..29957b983a 100644 --- a/packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts +++ b/packages/core/src/execution-engine/node-execution-context/utils/execution-metadata.ts @@ -38,9 +38,9 @@ export function setWorkflowExecutionMetadata( Logger.error('Custom data key over 50 characters long. Truncating to 50 characters.'); } if (val.length > 255) { - Logger.error('Custom data value over 255 characters long. Truncating to 255 characters.'); + Logger.error('Custom data value over 512 characters long. Truncating to 512 characters.'); } - executionData.resultData.metadata[key.slice(0, 50)] = val.slice(0, 255); + executionData.resultData.metadata[key.slice(0, 50)] = val.slice(0, 512); } export function setAllWorkflowExecutionMetadata( diff --git a/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts b/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts index f2d113948a..c450bff6dd 100644 --- a/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts +++ b/packages/nodes-base/nodes/ExecutionData/ExecutionData.node.ts @@ -83,6 +83,22 @@ export class ExecutionData implements INodeType { ], }, ], + hints: [ + { + type: 'warning', + message: 'Some keys are longer than 50 characters. They will be truncated.', + displayCondition: '={{ $parameter.dataToSave.values.some((x) => x.key.length > 50) }}', + whenToDisplay: 'beforeExecution', + location: 'outputPane', + }, + { + type: 'warning', + message: 'Some values are longer than 512 characters. They will be truncated.', + displayCondition: '={{ $parameter.dataToSave.values.some((x) => x.value.length > 512) }}', + whenToDisplay: 'beforeExecution', + location: 'outputPane', + }, + ], }; async execute(this: IExecuteFunctions): Promise {