-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
We upgrade to the v2 version recently and since then have started seeing these exceptions. When this happens, we have to restart the service instance in order for it to reconnect.
However, it seems that about an hour after the restart occurs, we get the same issue show up.
We're rolling back to the v1 library to mitigate the issue, but would like to find out what could be happening.
We're using the Azure Redis Cache for Pub/Sub only. The redis instance is hosted in West US 2 and used by services running in West US 2 and East US. In our case, only Easst US is running into these issues.
Here is the full exception information:
StackExchange.Redis.RedisConnectionException: No connection is available to service this operation: PUBLISH content; An existing connection was forcibly closed by the remote host; IOCP: (Busy=1,Free=999,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=4,Max=32767), Local-CPU: n/a ---> StackExchange.Redis.RedisConnectionException: SocketFailure on intentcontent-prod-westus2.redis.cache.windows.net:6380/Interactive, Flushing/Faulted, last: PUBLISH, origin: ReadFromPipe, outstanding: 984, last-read: 18s ago, last-write: 12s ago, keep-alive: 60s, state: ConnectedEstablished, mgr: 7 of 10 available, in: 0, last-heartbeat: 0s ago, last-mbeat: 0s ago, global: 0s ago, v: 2.0.600.65315 ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
StackExchange.Redis.RedisConnectionException: No connection is available to service this operation: PUBLISH content; An existing connection was forcibly closed by the remote host; IOCP: (Busy=1,Free=999,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=4,Max=32767), Local-CPU: n/a ---> StackExchange.Redis.RedisConnectionException: SocketFailure on intentcontent-prod-westus2.redis.cache.windows.net:6380/Interactive, Flushing/Faulted, last: PUBLISH, origin: ReadFromPipe, outstanding: 984, last-read: 18s ago, last-write: 12s ago, keep-alive: 60s, state: ConnectedEstablished, mgr: 7 of 10 available, in: 0, last-heartbeat: 0s ago, last-mbeat: 0s ago, global: 0s ago, v: 2.0.600.65315 ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
--- End of inner exception stack trace ---
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
at System.Net.Security.SslStreamInternal.<FillBufferAsync>g__InternalFillBufferAsync|38_0[TReadAdapter](TReadAdapter adap, ValueTask`1 task, Int32 min, Int32 initial)
at System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
at Pipelines.Sockets.Unofficial.StreamConnection.AsyncStreamPipe.CopyFromStreamToReadPipe() in C:\Code\Pipelines.Sockets.Unofficial\src\Pipelines.Sockets.Unofficial\StreamConnection.AsyncStreamPipe.cs:line 97
at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
at System.IO.Pipelines.Pipe.GetReadAsyncResult()
at StackExchange.Redis.PhysicalConnection.ReadFromPipe()
--- End of inner exception stack trace ---
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.PublishMessage(ContentMessage message, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendSmallChangeAsync(String documentId, ReadOnlyMemory`1 payload, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendAsync(String documentId, ReadOnlyMemory`1 payload, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendAsync(String documentId, ReadOnlyMemory`1 payload, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendAsync(String documentId, ReadOnlyMemory`1 payload, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendAsync(String documentId, ReadOnlyMemory`1 payload, Boolean fireAndForget)
--- End of inner exception stack trace ---
at StackExchange.Redis.ConnectionMultiplexer.ThrowFailed[T](TaskCompletionSource`1 source, Exception unthrownException) in C:\projects\stackexchange-redis\src\StackExchange.Redis\ConnectionMultiplexer.cs:line 2201
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.PublishMessage(ContentMessage message, Boolean fireAndForget)
at Microsoft.Intentional.ContentService.Frontend.Storage.RedisChangeNotifier.SendLargeChangeAsync(String documentId, ReadOnlyMemory`1 payload)
Anyone know if the info in the exception message is helpful? And what we can do to investigate further?