Commit 0ff83549 authored by Hans Kuder's avatar Hans Kuder Committed by Nick Craver

Improve error messaging in unreachable-after-moved situation (#980)

* Improve error messaging in unreachable-after-moved situation
parent 80ec6355
......@@ -183,6 +183,7 @@ public virtual bool SetResult(PhysicalConnection connection, Message message, in
var server = bridge.ServerEndPoint;
bool log = !message.IsInternalCall;
bool isMoved = result.StartsWith(CommonReplies.MOVED);
bool wasNoRedirect = ( message.Flags & CommandFlags.NoRedirect ) != 0;
string err = string.Empty;
bool unableToConnectError = false;
if (isMoved || result.StartsWith(CommonReplies.ASK))
......@@ -207,9 +208,9 @@ public virtual bool SetResult(PhysicalConnection connection, Message message, in
}
else
{
if (isMoved && (message.Flags & CommandFlags.NoRedirect) != 0)
if (isMoved && wasNoRedirect)
{
err = $"Key has MOVED from Endpoint {endpoint} and hashslot {hashSlot} but CommandFlags.NoRedirect was specified - redirect not followed for {message.CommandAndKey}. ";
err = $"Key has MOVED to Endpoint {endpoint} and hashslot {hashSlot} but CommandFlags.NoRedirect was specified - redirect not followed for {message.CommandAndKey}. ";
}
else
{
......
......@@ -196,7 +196,7 @@ string StringGet(IServer server, RedisKey key, CommandFlags flags = CommandFlags
Assert.Equal(value, b); // wrong master, allow redirect
var ex = Assert.Throws<RedisServerException>(() => StringGet(conn.GetServer(node.EndPoint), key, CommandFlags.NoRedirect));
Assert.StartsWith($"Key has MOVED from Endpoint {rightMasterNode.EndPoint} and hashslot {slot}", ex.Message);
Assert.StartsWith($"Key has MOVED to Endpoint {rightMasterNode.EndPoint} and hashslot {slot}", ex.Message);
}
node = config.Nodes.FirstOrDefault(x => x.IsSlave && x.ParentNodeId == rightMasterNode.NodeId);
......@@ -215,7 +215,7 @@ string StringGet(IServer server, RedisKey key, CommandFlags flags = CommandFlags
Assert.Equal(value, e); // wrong slave, allow redirect
var ex = Assert.Throws<RedisServerException>(() => StringGet(conn.GetServer(node.EndPoint), key, CommandFlags.NoRedirect));
Assert.StartsWith($"Key has MOVED from Endpoint {rightMasterNode.EndPoint} and hashslot {slot}", ex.Message);
Assert.StartsWith($"Key has MOVED to Endpoint {rightMasterNode.EndPoint} and hashslot {slot}", ex.Message);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment