We’ve setup a Horde server that currently uses a redis server running within a docker container. We’ve created an ElastiCache resource that we’re trying to migrate to, but when attempting to use it Horde outputs the following error message. We’re using a serverless valkey cache running engine version 8.
Is there some additional configuration required, or is this an unsupported setup? The docs mention that Epic uses ElastiCache - can you provide some information of the recommended setup?
[18:03:45 err] Exception in call to /Horde.HordeRpc/CreateSession StackExchange.Redis.RedisCommandException: Multi-key operations must involve a single slot; keys can use 'hash tags' to help this, i.e. '{/users/12345}/account' and '{/users/12345}/contacts' will always be in the same slot at StackExchange.Redis.ServerSelectionStrategy.Select(Message message, Boolean allowDisconnected) in /_/src/StackExchange.Redis/ServerSelectionStrategy.cs:line 144 at StackExchange.Redis.ConnectionMultiplexer.SelectServer(Message message) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1934 at StackExchange.Redis.ConnectionMultiplexer.PrepareToPushMessageToBridge[T](Message message, ResultProcessor
1 processor, IResultBox1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1949 at StackExchange.Redis.ConnectionMultiplexer.TryPushMessageToBridgeAsync[T](Message message, ResultProcessor
1 processor, IResultBox1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2007 at StackExchange.Redis.ConnectionMultiplexer.ExecuteAsyncImpl[T](Message message, ResultProcessor
1 processor, Object state, ServerEndPoint server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2188
at StackExchange.Redis.RedisBase.ExecuteAsync[T](Message message, ResultProcessor1 processor, ServerEndPoint server) in /_/src/StackExchange.Redis/RedisBase.cs:line 54 at StackExchange.Redis.RedisTransaction.ExecuteAsync(CommandFlags flags) in /_/src/StackExchange.Redis/RedisTransaction.cs:line 56 at HordeServer.Agents.AgentScheduler.TryCreateSessionAsync(AgentId agentId, SessionId sessionId, RpcAgentCapabilities capabilities, CancellationToken cancellationToken) in /app/Source/Programs/Horde/Plugins/Compute/HordeServer.Compute/Agents/AgentScheduler.cs:line 272 at HordeServer.Agents.AgentCollection.TryCreateSessionAsync(Agent agent, CreateSessionOptions options, CancellationToken cancellationToken) in /app/Source/Programs/Horde/Plugins/Compute/HordeServer.Compute/Agents/AgentCollection.cs:line 1091 at HordeServer.Agents.AgentCollection.Agent.TryCreateSessionAsync(CreateSessionOptions options, CancellationToken cancellationToken) in /app/Source/Programs/Horde/Plugins/Compute/HordeServer.Compute/Agents/AgentCollection.cs:line 117 at HordeServer.Agents.AgentService.CreateSessionAsync(IAgent agent, RpcAgentCapabilities capabilities, String version, CancellationToken cancellationToken) in /app/Source/Programs/Horde/Plugins/Compute/HordeServer.Compute/Agents/AgentService.cs:line 340 at HordeServer.Server.RpcService.CreateSession(RpcCreateSessionRequest request, ServerCallContext context) in /app/Source/Programs/Horde/Plugins/Compute/HordeServer.Compute/Server/RpcService.cs:line 227 at Grpc.Shared.Server.UnaryServerMethodInvoker
3.ResolvedInterceptorInvoker(TRequest resolvedRequest, ServerCallContext resolvedContext)
at Grpc.Shared.Server.UnaryServerMethodInvoker3.ResolvedInterceptorInvoker(TRequest resolvedRequest, ServerCallContext resolvedContext) at HordeServer.Startup.GrpcExceptionInterceptor.<>c__DisplayClass6_0
1.<b__0>d.MoveNext() in /app/Source/Programs/Horde/HordeServer/Startup.cs:line 130
— End of stack trace from previous location —
at HordeServer.Startup.GrpcExceptionInterceptor.GuardInnerAsync(ServerCallContext context, Func1 callFunc) in /app/Source/Programs/Horde/HordeServer/Startup.cs:line 155 [18:03:45 inf] Executed endpoint 'gRPC - /Horde.HordeRpc/CreateSession'