diff --git a/src/Redis/Orleans.GrainDirectory.Redis/RedisGrainDirectory.cs b/src/Redis/Orleans.GrainDirectory.Redis/RedisGrainDirectory.cs index 280c8f126e3..9d55b881fc4 100644 --- a/src/Redis/Orleans.GrainDirectory.Redis/RedisGrainDirectory.cs +++ b/src/Redis/Orleans.GrainDirectory.Redis/RedisGrainDirectory.cs @@ -191,14 +191,24 @@ public async Task Initialize(CancellationToken ct = default) private async Task Uninitialize(CancellationToken arg) { - if (_redis != null && _redis.IsConnected) + if (_redis != null) { _disposed = true; - await _redis.CloseAsync(); - _redis.Dispose(); - _redis = null!; - _database = null!; + try + { + await _redis.DisposeAsync(); + } + finally + { + _redis.ConnectionRestored -= LogConnectionRestored; + _redis.ConnectionFailed -= LogConnectionFailed; + _redis.ErrorMessage -= LogErrorMessage; + _redis.InternalError -= LogInternalError; + + _redis = null!; + _database = null!; + } } }