diff --git a/CHANGELOG.md b/CHANGELOG.md index 393d78d501..ca1d9efc12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ the release. ## Unreleased +* [accounting] fix memory leak with dbcontext + ([#2876](https://github.com/open-telemetry/opentelemetry-demo/pull/2876)) + ## 2.2.0 * [feat] add ipv6 support diff --git a/src/accounting/Consumer.cs b/src/accounting/Consumer.cs index af54c58f21..4392435d47 100644 --- a/src/accounting/Consumer.cs +++ b/src/accounting/Consumer.cs @@ -31,7 +31,7 @@ internal class Consumer : IDisposable private ILogger _logger; private IConsumer _consumer; private bool _isListening; - private DBContext? _dbContext; + private readonly string? _dbConnectionString; private static readonly ActivitySource MyActivitySource = new("Accounting.Consumer"); public Consumer(ILogger logger) @@ -49,7 +49,7 @@ public Consumer(ILogger logger) _logger.LogInformation("Connecting to Kafka: {servers}", servers); } - _dbContext = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING") == null ? null : new DBContext(); + _dbConnectionString = Environment.GetEnvironmentVariable("DB_CONNECTION_STRING"); } public void StartListening() @@ -90,16 +90,17 @@ private void ProcessMessage(Message message) var order = OrderResult.Parser.ParseFrom(message.Value); Log.OrderReceivedMessage(_logger, order); - if (_dbContext == null) + if (_dbConnectionString == null) { return; } + using var dbContext = new DBContext(); var orderEntity = new OrderEntity { Id = order.OrderId }; - _dbContext.Add(orderEntity); + dbContext.Add(orderEntity); foreach (var item in order.Items) { var orderItem = new OrderItemEntity @@ -112,7 +113,7 @@ private void ProcessMessage(Message message) OrderId = order.OrderId }; - _dbContext.Add(orderItem); + dbContext.Add(orderItem); } var shipping = new ShippingEntity @@ -128,8 +129,8 @@ private void ProcessMessage(Message message) ZipCode = order.ShippingAddress.ZipCode, OrderId = order.OrderId }; - _dbContext.Add(shipping); - _dbContext.SaveChanges(); + dbContext.Add(shipping); + dbContext.SaveChanges(); } catch (Exception ex) {