Skip to content
This repository was archived by the owner on Jun 11, 2026. It is now read-only.

Commit 3187abd

Browse files
Unregister receive handler fix (#135)
* Update readme.md (#110) Fixed broken links. * Unregistering receive handler shouldn't generate OperationCanceledException * Removing .Fork() comment
1 parent f4eab19 commit 3187abd

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

src/Microsoft.Azure.EventHubs/Amqp/AmqpPartitionReceiver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ protected override void OnSetReceiveHandler(IPartitionReceiveHandler newReceiveH
130130
{
131131
lock (this.receivePumpLock)
132132
{
133-
if (this.receiveHandler != null)
133+
if (newReceiveHandler != null && this.receiveHandler != null)
134134
{
135135
// Notify existing handler first (but don't wait).
136-
this.receiveHandler.ProcessErrorAsync(new OperationCanceledException("New handler has registered for this receiver.")); // .Fork();
136+
this.receiveHandler.ProcessErrorAsync(new OperationCanceledException("New handler has registered for this receiver."));
137137
}
138138

139139
this.receiveHandler = newReceiveHandler;

test/Microsoft.Azure.EventHubs.UnitTests/EventHubClientTests.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,13 @@ async Task PartitionReceiverSetReceiveHandler()
532532

533533
EventWaitHandle dataReceivedEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
534534
var handler = new TestPartitionReceiveHandler();
535-
handler.ErrorReceived += (s, e) => Log($"TestPartitionReceiveHandler.ProcessError {e.GetType().Name}: {e.Message}");
535+
536+
// Not expecting any errors.
537+
handler.ErrorReceived += (s, e) =>
538+
{
539+
throw new Exception($"TestPartitionReceiveHandler.ProcessError {e.GetType().Name}: {e.Message}");
540+
};
541+
536542
handler.EventsReceived += (s, eventDatas) =>
537543
{
538544
int count = eventDatas != null ? eventDatas.Count() : 0;
@@ -564,6 +570,10 @@ async Task PartitionReceiverSetReceiveHandler()
564570
}
565571
finally
566572
{
573+
// Unregister handler.
574+
partitionReceiver.SetReceiveHandler(null);
575+
576+
// Close clients.
567577
await partitionSender.CloseAsync();
568578
await partitionReceiver.CloseAsync();
569579
}

0 commit comments

Comments
 (0)