diff --git a/src/Hazelcast.Net.Tests/Clustering/MembersLifecycleTests.cs b/src/Hazelcast.Net.Tests/Clustering/MembersLifecycleTests.cs index 199d5356d..e0313c26c 100644 --- a/src/Hazelcast.Net.Tests/Clustering/MembersLifecycleTests.cs +++ b/src/Hazelcast.Net.Tests/Clustering/MembersLifecycleTests.cs @@ -170,12 +170,17 @@ await AssertEx.SucceedsEventually(() => while (RcMembers.Count > 1) { var (memberId, member) = RcMembers.First(); + var expectedCount = RcMembers.Count - 1; HConsole.WriteLine(this, $"Remove member {member.Uuid.Substring(0, 7)} at {member.Host}:{member.Port}..."); stopwatch.Restart(); await RemoveMember(memberId); HConsole.WriteLine(this, $"Removed member {member.Uuid.Substring(0, 7)} ({(int)stopwatch.Elapsed.TotalSeconds}s)"); - await Task.Delay(1000); + // wait for MembersUpdated event to reflect the removal before proceeding + await AssertEx.SucceedsEventually(() => + { + Assert.That(Volatile.Read(ref membersCount), Is.EqualTo(expectedCount)); + }, 20000, 200); await UseClientOnce(map); } diff --git a/src/Hazelcast.Net/Clustering/ClusterEvents.cs b/src/Hazelcast.Net/Clustering/ClusterEvents.cs index 6aec69104..274df5798 100644 --- a/src/Hazelcast.Net/Clustering/ClusterEvents.cs +++ b/src/Hazelcast.Net/Clustering/ClusterEvents.cs @@ -746,6 +746,7 @@ private void CollectSubscription(ClusterSubscription subscription) { lock (_collectMutex) { + if (_disposed == 1) return; foreach (var memberSubscription in subscription) _collectSubscriptions.Add(memberSubscription); _collectTask ??= CollectSubscriptionsAsync(_cancel.Token); @@ -757,6 +758,7 @@ private void CollectSubscription(MemberSubscription subscription) { lock (_collectMutex) { + if (_disposed == 1) return; _collectSubscriptions.Add(subscription); _collectTask ??= CollectSubscriptionsAsync(_cancel.Token); } diff --git a/src/Hazelcast.Net/Clustering/MemberConnection.cs b/src/Hazelcast.Net/Clustering/MemberConnection.cs index c51f69bf8..11f531819 100644 --- a/src/Hazelcast.Net/Clustering/MemberConnection.cs +++ b/src/Hazelcast.Net/Clustering/MemberConnection.cs @@ -314,7 +314,7 @@ private async ValueTask OnSocketShutdown(SocketConnectionBase connection) #pragma warning restore CA1801 #pragma warning restore IDE0079 { - await DisposeAsync().CfAwait(); + await DisposeAsync().CfAwaitNoThrow(); } ///