riok / Kreya

Kreya is a GUI client for gRPC and REST APIs with innovative features for environments, authorizations and more.
https://kreya.app
284 stars 5 forks source link

The JSON value of length 263116355 is too large and not supported. #164

Closed AmanSoniZscaler closed 11 months ago

AmanSoniZscaler commented 1 year ago

Describe the bug A clear and concise description of what the bug is.

When response is too large then we are getting this error

Steps to reproduce the behavior: Hit the grpc server with large data

Screenshots

error traces :

System.ArgumentException: The JSON value of length 263116355 is too large and not supported. at System.Text.Json.ThrowHelper.ThrowArgumentException_ValueTooLarge(Int32 tokenLength) at System.Text.Json.Serialization.JsonConverter1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state) at System.Text.Json.Serialization.Metadata.JsonPropertyInfo1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer) at System.Text.Json.Serialization.Converters.ObjectDefaultConverter1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state) at System.Text.Json.Serialization.JsonConverter1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state) at System.Text.Json.Serialization.JsonConverter1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state) at System.Text.Json.Serialization.JsonConverter1.WriteCoreAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state) at System.Text.Json.JsonSerializer.WriteCoreAsObject(Utf8JsonWriter writer, Object value, JsonTypeInfo jsonTypeInfo) at System.Text.Json.JsonSerializer.WriteStringAsObject(Object value, JsonTypeInfo jsonTypeInfo) at Kreya.Data.HistoryStorage.<>c__DisplayClass20_0.b__0(Object x, Int32 i) in /builds/riokch/kreya/kreya/src/Kreya.Data/HistoryStorage.cs:line 169 at System.Linq.Enumerable.SelectIterator[TSource,TResult](IEnumerable1 source, Func3 selector)+MoveNext() at Microsoft.EntityFrameworkCore.Internal.InternalDbSet1.SetEntityStates(IEnumerable1 entities, EntityState entityState) at Microsoft.EntityFrameworkCore.Internal.InternalDbSet1.AddRange(IEnumerable1 entities) at Kreya.Data.HistoryStorage.AddResponseMessages(Int32 id, IEnumerable1 responses) in /builds/riokch/kreya/kreya/src/Kreya.Data/HistoryStorage.cs:line 169 at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.RunInNewScope[TService](IServiceProvider sp, Func2 action) in /builds/riokch/kreya/kreya/src/Kreya.Common/Extensions/ServiceProviderExtensions.cs:line 29 at Microsoft.Extensions.DependencyInjection.ServiceProviderExtensions.RunInNewScope[TService](IServiceProvider sp, Func2 action) in /builds/riokch/kreya/kreya/src/Kreya.Common/Extensions/ServiceProviderExtensions.cs:line 29 at Kreya.Common.Utils.AsyncFunctionBuffer1.DisposeAsync() in /builds/riokch/kreya/kreya/src/Kreya.Common/Utils/AsyncFunctionBuffer.cs:line 57 at Kreya.Core.History.HistoryEntryService.DisposeAsync() in /builds/riokch/kreya/kreya/src/Kreya.Core/History/HistoryEntryService.cs:line 45 at Kreya.Core.Invoker.OperationInvoker.DisposeAsync() in /builds/riokch/kreya/kreya/src/Kreya.Core/Invoker/OperationInvoker.cs:line 114 at Kreya.Core.Invoker.InvokerScope.DisposeAsync() in /builds/riokch/kreya/kreya/src/Kreya.Core/Invoker/InvokerScope.cs:line 103 at Kreya.UI.Invoker.InvokerUiService.CleanInvokerScope(Guid invokerId) in /builds/riokch/kreya/kreya/src/Kreya.UI/Invoker/InvokerUiService.cs:line 110 at Kreya.UI.Invoker.InvokerUiService.WithInvokerScope(Guid invokerId, Func`2 func) in /builds/riokch/kreya/kreya/src/Kreya.UI/Invoker/InvokerUiService.cs:line 101 at Kreya.UI.Invoker.InvokerUiService.SendAllRequestsAndComplete(Guid invokerId) in /builds/riokch/kreya/kreya/src/Kreya.UI/Invoker/InvokerUiService.cs:line 63 at SpiderEye.Bridge.ApiMethod.InvokeAsync(Object instance, Object parameter) at SpiderEye.Bridge.WebviewBridge.InvokeWithDependencyInjection(IDependencyInjectionApiMethod apiMethod, Object parameters) at SpiderEye.Bridge.WebviewBridge.InvokeWithDependencyInjection(IDependencyInjectionApiMethod apiMethod, Object parameters) at SpiderEye.Bridge.WebviewBridge.ResolveCall(String id, String parameters)

CommonGuy commented 1 year ago

It seems like you have gRPC responses with 263MB of data. Is that correct?

We try to store the response in the history, so that it is visible later when you re-open the operation. But with such large responses, we need to think about how to handle that case...

CommonGuy commented 11 months ago

This should be fixed with the newly released 1.12 version.