From 93ae44d76661b5f3aa6e50f17009d8e800628d8f Mon Sep 17 00:00:00 2001 From: Heather Lapointe Date: Wed, 3 Jun 2026 18:56:39 -0400 Subject: [PATCH] Allow schema to still validate even if the metaschema has issues AJV can throw a RangeError (max recursion) when trying to resolve the metaschema even if the schema is valid --- src/languageservice/services/yamlSchemaService.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/languageservice/services/yamlSchemaService.ts b/src/languageservice/services/yamlSchemaService.ts index 46bc44ca0..ff3d6c3a3 100644 --- a/src/languageservice/services/yamlSchemaService.ts +++ b/src/languageservice/services/yamlSchemaService.ts @@ -390,7 +390,15 @@ export class YAMLSchemaService extends JSONSchemaService { toValidate = _cloneSchema(node, new Map(), stopAtDialectBoundary) as JSONSchema; } - if (!validator(toValidate)) { + let valid = false; + try { + valid = validator(toValidate); + } catch (e) { + // AJV overflows on recursive/cyclic schemas; attempt to degrade gracefully + console.warn(l10n.t("Schema '{0}' could not be fully validated: {1}", loc, e.message)); + return; + } + if (!valid) { localizeAjvErrors(validator.errors, ajvErrorLocale); const errs: string[] = []; for (const err of validator.errors as DefinedError[]) {