You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Nov 16, 2022. It is now read-only.
When ConnectionMultiplexer is initialized and fails to connect to Redis will fail next times because the exception is cached and thrown again on subsequent calls to the Value property. This is because the property LazyThreadSafetyMode in Lazy object is not set (and then is None).
To fix this property can be set to PublicationOnly:
From:
internal RedisOptions()
{
this.multiplexer = GetConnectionMultiplexer();
}
private Lazy<IConnectionMultiplexer> GetConnectionMultiplexer()
{
return new Lazy<IConnectionMultiplexer>(
() =>
{
// if the user provided a multiplexer, we should use it
if (this.providedMultiplexer != null)
{
return this.providedMultiplexer;
}
// otherwise we must make our own connection
return string.IsNullOrEmpty(this.RedisConnectionString)
? ConnectionMultiplexer.Connect(this.ConfigurationOptions)
: ConnectionMultiplexer.Connect(this.RedisConnectionString);
});
}
private IConnectionMultiplexer providedMultiplexer = null;
private Lazy<IConnectionMultiplexer> multiplexer = null;
internal IConnectionMultiplexer Multiplexer => this.multiplexer.Value;
To:
internal RedisOptions()
{
this.multiplexer = GetConnectionMultiplexer();
}
private Lazy<IConnectionMultiplexer> GetConnectionMultiplexer()
{
return new Lazy<IConnectionMultiplexer>(
() =>
{
// if the user provided a multiplexer, we should use it
if (this.providedMultiplexer != null)
{
return this.providedMultiplexer;
}
// otherwise we must make our own connection
return string.IsNullOrEmpty(this.RedisConnectionString)
? ConnectionMultiplexer.Connect(this.ConfigurationOptions)
: ConnectionMultiplexer.Connect(this.RedisConnectionString);
},
LazyThreadSafetyMode.PublicationOnly);
}
private IConnectionMultiplexer providedMultiplexer = null;
private Lazy<IConnectionMultiplexer> multiplexer = null;
internal IConnectionMultiplexer Multiplexer => this.multiplexer.Value;
This can be too optional to avoid problems in multithreading environments.
The text was updated successfully, but these errors were encountered:
Hi,
When ConnectionMultiplexer is initialized and fails to connect to Redis will fail next times because the exception is cached and thrown again on subsequent calls to the Value property. This is because the property LazyThreadSafetyMode in Lazy object is not set (and then is None).
To fix this property can be set to PublicationOnly:
From:
To:
This can be too optional to avoid problems in multithreading environments.
The text was updated successfully, but these errors were encountered: