Skip to content

Commit 973e5da

Browse files
committed
* Re-instate requirement to call CloseAsync prior to Dispose for channels and connections.
1 parent e20cc26 commit 973e5da

File tree

6 files changed

+19
-7
lines changed

6 files changed

+19
-7
lines changed

projects/RabbitMQ.Client/client/impl/AutorecoveringChannel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ public void Dispose()
237237

238238
if (IsOpen)
239239
{
240-
this.AbortAsync().GetAwaiter().GetResult();
240+
throw new InvalidOperationException("CloseAsync/AbortAsync must be called prior to Dispose");
241241
}
242242

243243
_recordedConsumerTags.Clear();

projects/RabbitMQ.Client/client/impl/ChannelBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ protected virtual void Dispose(bool disposing)
546546
{
547547
if (IsOpen)
548548
{
549-
this.AbortAsync().GetAwaiter().GetResult();
549+
throw new InvalidOperationException("CloseAsync/AbortAsync must be called prior to Dispose");
550550
}
551551

552552
ConsumerDispatcher.Dispose();

projects/RabbitMQ.Client/client/impl/Connection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ public void Dispose()
484484
{
485485
if (IsOpen)
486486
{
487-
this.AbortAsync().GetAwaiter().GetResult();
487+
throw new InvalidOperationException("CloseAsync/AbortAsync must be called prior to Dispose");
488488
}
489489

490490
_session0.Dispose();

projects/Test/Common/TestConnectionRecoveryBase.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ internal async Task<AutorecoveringConnection> CreateAutorecoveringConnectionWith
164164
return (AutorecoveringConnection)conn;
165165
}
166166

167-
protected Task CloseConnectionAsync(IConnection conn)
167+
protected static Task CloseConnectionAsync(IConnection conn)
168168
{
169169
return Util.CloseConnectionAsync(conn);
170170
}
@@ -178,15 +178,15 @@ internal async Task CloseAndWaitForRecoveryAsync(AutorecoveringConnection conn)
178178
{
179179
TaskCompletionSource<bool> sl = PrepareForShutdown(conn);
180180
TaskCompletionSource<bool> rl = PrepareForRecovery(conn);
181-
await CloseConnectionAsync(conn);
181+
await TestConnectionRecoveryBase.CloseConnectionAsync(conn);
182182
await WaitAsync(sl, "connection shutdown");
183183
await WaitAsync(rl, "connection recovery");
184184
}
185185

186186
internal async Task CloseAndWaitForShutdownAsync(AutorecoveringConnection conn)
187187
{
188188
TaskCompletionSource<bool> sl = PrepareForShutdown(conn);
189-
await CloseConnectionAsync(conn);
189+
await TestConnectionRecoveryBase.CloseConnectionAsync(conn);
190190
await WaitAsync(sl, "connection shutdown");
191191
}
192192

@@ -208,7 +208,7 @@ protected async Task PublishMessagesWhileClosingConnAsync(QueueName queueName)
208208
{
209209
if (i == CloseAtCount)
210210
{
211-
await CloseConnectionAsync(_conn);
211+
await TestConnectionRecoveryBase.CloseConnectionAsync(_conn);
212212
}
213213

214214
await publishingChannel.BasicPublishAsync(ExchangeName.Empty, (RoutingKey)queueName, _messageBody);
@@ -217,6 +217,8 @@ protected async Task PublishMessagesWhileClosingConnAsync(QueueName queueName)
217217

218218
await publishingChannel.CloseAsync();
219219
}
220+
221+
await publishingConn.CloseAsync();
220222
}
221223
}
222224

projects/Test/Integration/TestChannelAllocation.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ public async Task AllocateInOrderOnlyUsingDispose()
8888
Assert.Equal(i, ChannelNumber(channel));
8989
}
9090

91+
var closeTasks = new List<Task>();
92+
foreach (IChannel channel in channels)
93+
{
94+
closeTasks.Add(channel.CloseAsync());
95+
}
96+
97+
await Task.WhenAll(closeTasks);
98+
9199
foreach (IChannel channel in channels)
92100
{
93101
channel.Dispose();

projects/Test/Integration/TestConnectionShutdown.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public async Task TestDisposedWithSocketClosedOutOfBand()
104104

105105
try
106106
{
107+
await _conn.CloseAsync();
107108
_conn.Dispose();
108109
await WaitAsync(tcs, WaitSpan, "channel shutdown");
109110
await frameHandlerCloseTask.WaitAsync(WaitSpan);
@@ -140,6 +141,7 @@ public async Task TestShutdownSignalPropagationToChannelsUsingDispose()
140141
tcs.SetResult(true);
141142
};
142143

144+
await _conn.CloseAsync();
143145
_conn.Dispose();
144146
_conn = null;
145147

0 commit comments

Comments
 (0)