mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-29 22:12:05 +00:00
perf: implement validator instance caching to avoid redundant initialization
- Add module-level cached WorkflowValidator instance - Create getValidator() helper to reuse validator across mutations - Update pre/post mutation validation to use cached instance - Avoids redundant NodeSimilarityService initialization on every mutation Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,20 @@ import { WorkflowVersioningService } from '../services/workflow-versioning-servi
|
||||
import { WorkflowValidator } from '../services/workflow-validator';
|
||||
import { EnhancedConfigValidator } from '../services/enhanced-config-validator';
|
||||
|
||||
// Cached validator instance to avoid recreating on every mutation
|
||||
let cachedValidator: WorkflowValidator | null = null;
|
||||
|
||||
/**
|
||||
* Get or create cached workflow validator instance
|
||||
* Reuses the same validator to avoid redundant NodeSimilarityService initialization
|
||||
*/
|
||||
function getValidator(repository: NodeRepository): WorkflowValidator {
|
||||
if (!cachedValidator) {
|
||||
cachedValidator = new WorkflowValidator(repository, EnhancedConfigValidator);
|
||||
}
|
||||
return cachedValidator;
|
||||
}
|
||||
|
||||
// Zod schema for the diff request
|
||||
const workflowDiffSchema = z.object({
|
||||
id: z.string(),
|
||||
@@ -99,7 +113,7 @@ export async function handleUpdatePartialWorkflow(
|
||||
|
||||
// Validate workflow BEFORE mutation (for telemetry)
|
||||
try {
|
||||
const validator = new WorkflowValidator(repository, EnhancedConfigValidator);
|
||||
const validator = getValidator(repository);
|
||||
validationBefore = await validator.validateWorkflow(workflowBefore, {
|
||||
validateNodes: true,
|
||||
validateConnections: true,
|
||||
@@ -281,7 +295,7 @@ export async function handleUpdatePartialWorkflow(
|
||||
|
||||
// Validate workflow AFTER mutation (for telemetry)
|
||||
try {
|
||||
const validator = new WorkflowValidator(repository, EnhancedConfigValidator);
|
||||
const validator = getValidator(repository);
|
||||
validationAfter = await validator.validateWorkflow(finalWorkflow, {
|
||||
validateNodes: true,
|
||||
validateConnections: true,
|
||||
|
||||
Reference in New Issue
Block a user