microsoft / PowerPlatform-DataverseServiceClient

Code Replica for Microsoft.PowerPlatform.Dataverse.Client and supporting nuget packages.
MIT License
284 stars 52 forks source link

High memory consumption after exceptions being thrown #474

Closed tovyhnal closed 2 weeks ago

tovyhnal commented 1 month ago

As suggested in here, we started using ServiceClient as singleton in our application. Recently we noticed, that our web application started occasionally failing with OutOfMemoryException.

We believe, this is connected with our migration to singleton ServiceClient.

I was able to repro this (high memory usage) locally, by requesting non-existing entity from DV, which resulted in exception being thrown in ServiceClient. After 10k of such iterations, memory grew to 1,4GB.

Image

I suspect, it is connected to DataverseTraceLogger and this code which add any thrown exception into internal list of exceptions. This can accumulate over days to size, which causes service to crash with OutOfMemoryException.

See below state of DataverseTraceLogger after ~400 exceptions thrown. Image

tovyhnal commented 1 month ago

I ran memory profiler, which I believe confirms my assumption:

Image

MattB-msft commented 1 month ago

Fix was provided by reporter internally thanks @tovyhnal , Fix will be provided in the next update drop to the client.

ChrisIsidora commented 3 weeks ago

@MattB-msft Is there an estimate when this will be included in a new release?

MattB-msft commented 2 weeks ago

Fix was provided in the associated release