File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed
projects/RabbitMQ.Client/client/impl Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -71,11 +71,23 @@ static bool ShouldTriggerConnectionRecovery(ShutdownEventArgs args)
7171 }
7272 }
7373
74- // happens when EOF is reached, e.g. due to RabbitMQ node
75- // connectivity loss or abrupt shutdown
7674 if ( args . Initiator == ShutdownInitiator . Library )
7775 {
78- return true ;
76+ /*
77+ * https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/826
78+ * Happens when an AppDomain is unloaded
79+ */
80+ if ( args . Exception is ThreadAbortException &&
81+ args . ReplyCode == Constants . InternalError )
82+ {
83+ return false ;
84+ }
85+ else
86+ {
87+ // happens when EOF is reached, e.g. due to RabbitMQ node
88+ // connectivity loss or abrupt shutdown
89+ return true ;
90+ }
7991 }
8092
8193 return false ;
Original file line number Diff line number Diff line change @@ -53,6 +53,19 @@ private async Task MainLoop()
5353 await ReceiveLoopAsync ( mainLoopToken )
5454 . ConfigureAwait ( false ) ;
5555 }
56+ #if NETSTANDARD
57+ catch ( ThreadAbortException taex )
58+ {
59+ /*
60+ * https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/826
61+ */
62+ var ea = new ShutdownEventArgs ( ShutdownInitiator . Library ,
63+ Constants . InternalError ,
64+ "Thread aborted (AppDomain unloaded?)" ,
65+ exception : taex ) ;
66+ HandleMainLoopException ( ea ) ;
67+ }
68+ #endif
5669 catch ( EndOfStreamException eose )
5770 {
5871 // Possible heartbeat exception
You can’t perform that action at this time.
0 commit comments