Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/OpenFeature/EventExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ private void StartListeningAndShutdownOld(FeatureProvider newProvider, FeaturePr
if (oldProvider != null && !this.IsProviderBound(oldProvider))
{
this._activeSubscriptions.Remove(oldProvider);
oldProvider.GetEventChannel()?.Writer.Complete();
oldProvider.GetEventChannel().Writer.Complete();
}
}

Expand Down
5 changes: 5 additions & 0 deletions test/OpenFeature.Tests/OpenFeatureTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading.Channels;
using System.Threading.Tasks;
using NSubstitute;
using OpenFeature.Constant;
Expand Down Expand Up @@ -47,25 +48,29 @@ public async Task OpenFeature_Should_Shutdown_Unused_Provider()
{
var providerA = Substitute.For<FeatureProvider>();
providerA.Status.Returns(ProviderStatus.NotReady);
providerA.GetEventChannel().Returns(Channel.CreateBounded<object>(1));

await Api.Instance.SetProviderAsync(providerA);
await providerA.Received(1).InitializeAsync(Api.Instance.GetContext());

var providerB = Substitute.For<FeatureProvider>();
providerB.Status.Returns(ProviderStatus.NotReady);
providerB.GetEventChannel().Returns(Channel.CreateBounded<object>(1));

await Api.Instance.SetProviderAsync(providerB);
await providerB.Received(1).InitializeAsync(Api.Instance.GetContext());
await providerA.Received(1).ShutdownAsync();

var providerC = Substitute.For<FeatureProvider>();
providerC.Status.Returns(ProviderStatus.NotReady);
providerC.GetEventChannel().Returns(Channel.CreateBounded<object>(1));

await Api.Instance.SetProviderAsync("named", providerC);
await providerC.Received(1).InitializeAsync(Api.Instance.GetContext());

var providerD = Substitute.For<FeatureProvider>();
providerD.Status.Returns(ProviderStatus.NotReady);
providerD.GetEventChannel().Returns(Channel.CreateBounded<object>(1));

await Api.Instance.SetProviderAsync("named", providerD);
await providerD.Received(1).InitializeAsync(Api.Instance.GetContext());
Expand Down