fix(editor): Add notice when user hits the limit for execution metadata item length (#12676)

This commit is contained in:
Eugene 2025-01-27 13:29:14 +03:00 committed by GitHub
parent a24e4420bb
commit 02df25c450
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 9 deletions

View file

@ -205,15 +205,12 @@ describe('Execution Metadata functions', () => {
}, },
} as IRunExecutionData; } as IRunExecutionData;
setWorkflowExecutionMetadata( const longValue = 'a'.repeat(513);
executionData,
'test1', setWorkflowExecutionMetadata(executionData, 'test1', longValue);
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab',
);
expect(metadata).toEqual({ expect(metadata).toEqual({
test1: test1: longValue.slice(0, 512),
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
}); });
}); });
}); });

View file

@ -38,9 +38,9 @@ export function setWorkflowExecutionMetadata(
Logger.error('Custom data key over 50 characters long. Truncating to 50 characters.'); Logger.error('Custom data key over 50 characters long. Truncating to 50 characters.');
} }
if (val.length > 255) { 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( export function setAllWorkflowExecutionMetadata(

View file

@ -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<INodeExecutionData[][]> { async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {