From 9f3777a6841fe1839b38bb245d7cad820311aa16 Mon Sep 17 00:00:00 2001 From: tengo-lebanidze Date: Tue, 10 Feb 2026 17:00:25 +0400 Subject: [PATCH] add durability for graphql internal errors --- .../BulkActions/Actions/ClearFieldsBulkAction.cs | 1 - .../Contentful/GraphQL/ContentfulGraphQlClient.cs | 13 +++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/source/Cute.Lib/Contentful/BulkActions/Actions/ClearFieldsBulkAction.cs b/source/Cute.Lib/Contentful/BulkActions/Actions/ClearFieldsBulkAction.cs index 27bb654..22b4c74 100644 --- a/source/Cute.Lib/Contentful/BulkActions/Actions/ClearFieldsBulkAction.cs +++ b/source/Cute.Lib/Contentful/BulkActions/Actions/ClearFieldsBulkAction.cs @@ -45,7 +45,6 @@ private async Task GetAllEntriesForComparison(Action? p var queryBuilder = new EntryQuery.Builder() .WithContentType(_contentType) - .WithPageSize(1) .WithLocale("*") .WithIncludeLevels(0); diff --git a/source/Cute.Lib/Contentful/GraphQL/ContentfulGraphQlClient.cs b/source/Cute.Lib/Contentful/GraphQL/ContentfulGraphQlClient.cs index d5c44d7..8ec3602 100644 --- a/source/Cute.Lib/Contentful/GraphQL/ContentfulGraphQlClient.cs +++ b/source/Cute.Lib/Contentful/GraphQL/ContentfulGraphQlClient.cs @@ -97,6 +97,19 @@ public async IAsyncEnumerable GetDataEnumerable(string query, if (responseObject is null) yield break; + if (responseObject.SelectToken("errors") is JArray errors && errors.Count > 0) + { + if (retryCount < 10) + { + retryCount++; + postBody.variables["limit"] = (int)postBody.variables["limit"] / 2; + continue; + } + var errorMessage = errors[0]["message"]?.ToString() ?? "Unknown GraphQL error"; + var errorCode = errors[0].SelectToken("extensions.contentful.code")?.ToString(); + throw new CliException($"GraphQL error: {errorMessage}" + (errorCode != null ? $" (Code: {errorCode})" : "")); + } + if (responseObject.SelectToken(jsonResultsPath) is not JArray newRecords) yield break;