Detected server version is non-deterministic on Valkey since 3.4.0
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
The version comes from ServerEndPoint.Version, which is set by whichever handshake reply (INFO redis_version or HELLO version) is processed last; start by reading the code that handles those two replies during connection setup. Run the repro against valkey/valkey:9.1.2 in Docker to see the version change between connections. Done when the detected version is the same on every connection and LockReleaseAsync no longer sends DELEX to Valkey 9.1.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Since 3.4.0, ServerEndPoint.Version depends on which handshake reply is processed last: INFO (redis_version) or HELLO (version).
On Redis both values are identical, so nothing shows.
On Valkey they differ (redis_version:7.2.4 in INFO, version: 9.1.2 in HELLO).
So the detected version changes from one connection to another, and commands gated on Redis versions get used on a server that does not support them.
For exemple, one consequence: LockRelease sometimes sends DELEX, which Valkey 9.1 does not know, and the lock is not released.
Environment
- StackExchange.Redis 3.4.5
- Valkey 9.1
- .NET 10
Repro
docker run --rm -d -p 6379:6379 valkey/valkey:9.1.2
#:package [email protected]
using StackExchange.Redis;
for (int i = 1; i <= 50; i++)
{
using ConnectionMultiplexer muxer = await ConnectionMultiplexer.ConnectAsync("localhost:6379");
IDatabase db = muxer.GetDatabase();
string key = $"lock:{i}";
await db.LockTakeAsync(key, "token", TimeSpan.FromSeconds(30));
await Task.Delay(100);
Console.Write($"#{i} server.Version={muxer.GetServers()[0].Version}: ");
try
{
Console.WriteLine($"released={await db.LockReleaseAsync(key, "token")}");
}
catch (RedisServerException ex)
{
Console.WriteLine(ex.Message);
}
await db.KeyDeleteAsync(key);
}
- Lenguaje dominante
- C#
- Estrellas
- 6.2k
- Forks
- 1.6k
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 28
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de StackExchange/StackExchange.Redis
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
StackExchange/StackExchange.Redis#3249 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
HotKeysClusterTests.CanUseClusterFilter skips intermittently, hiding the assertions it exists forAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
StackExchange/StackExchange.Redis#3239 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
StackExchange/StackExchange.Redis#3240 ·
Los mantenedores suelen responder en 1 día
-
RedisValue equality treats "1,000", "(5)" and " 5 " as numbers, via NumberStyles.AnyPosiblemente ocupada @banlor la tomó hace 24 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
StackExchange/StackExchange.Redis#3233 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Failover: support single configuration-string connectPosiblemente ocupada @mgravell la tomó hace 78 días. Abierto⚙️ area:failover
StackExchange/StackExchange.Redis#3147 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de StackExchange/StackExchange.Redis
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
dette technique priorité: basse zone: service
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
damiensabau/nexus-lobby#25 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
sebastienros/jint#4282 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
pyrevitlabs/pyRevit#3792 ·
Los mantenedores suelen responder en 1 día