public override Task <TValue> AdapterCallAsync <TValue>(CommandPacket cmd, Func <RedisResult, TValue> parse) { return(TopOwner.LogCallAsync(cmd, async() => { var asyncRds = _asyncManager.GetAsyncRedisSocket(cmd); try { var rt = await asyncRds.WriteAsync(cmd); return parse(rt); } catch (ProtocolViolationException) { var pool = (asyncRds._rds as DefaultRedisSocket.TempProxyRedisSocket)?._pool; cmd._protocolErrorTryCount++; if (pool != null && cmd._protocolErrorTryCount <= pool._policy._connectionStringBuilder.Retry) { return await AdapterCallAsync(cmd, parse); } else { if (cmd.IsReadOnlyCommand() == false || cmd._protocolErrorTryCount > 1) { throw; } return await AdapterCallAsync(cmd, parse); } } })); }
public override Task <TValue> AdapterCallAsync <TValue>(CommandPacket cmd, Func <RedisResult, TValue> parse) { return(TopOwner.LogCallAsync(cmd, async() => { var asyncRds = _asyncManager.GetAsyncRedisSocket(cmd); var rt = await asyncRds.WriteAsync(cmd); return parse(rt); })); }