Commit Graph

4301 Commits

Author SHA1 Message Date
6cd068d421 Cluster test: unit 03, check epochs correctness. 2014-06-21 15:18:32 +02:00
90b4f91e1a Cluster test: better failover detection in unit 03. 2014-06-21 15:18:32 +02:00
9912a60d01 Cluster test: added show-redis-logs command in the interactive console. 2014-06-21 15:18:32 +02:00
7079ef0341 Cluster test: new unit 03, failover loop stress testing. 2014-06-21 15:18:32 +02:00
1d896303af Cluster test: 02 unit more reliable waiting for slave sync. 2014-06-21 15:18:32 +02:00
d7a4025828 Cluster test: unit 02 should wait for failover. 2014-06-21 15:18:31 +02:00
33f09f0ff3 Cluster test: check master -> slave role switch. 2014-06-21 15:18:31 +02:00
5cdefb7c99 Cluster: cluster_my_epoch added to CLUSTER INFO output. 2014-06-21 15:18:31 +02:00
2213f283c5 ROLE output improved for slaves.
Info about the replication state with the master added.
2014-06-21 15:18:31 +02:00
9b460e803a ROLE command added.
The new ROLE command is designed in order to provide a client with
informations about the replication in a fast and easy to use way
compared to the INFO command where the same information is also
available.
2014-06-21 15:18:31 +02:00
ea5335fb9b Redis 2.9.55 (Redis 3.0.0 beta-6). 3.0.0-beta6 2014-06-09 16:01:12 +02:00
726d343ad7 Fix lack of strtold under Cygwin
Renaming strtold to strtod then casting
the result is the standard way of dealing with
no strtold in Cygwin.
2014-06-09 11:43:17 +02:00
28fef5c57b Fix lack of SA_ONSTACK under Cygwin
Fixes #232
2014-06-09 11:43:17 +02:00
7fc1fc8ca7 Fix blocking operations from missing new lists
Behrad Zari discovered [1] and Josiah reported [2]: if you block
and wait for a list to exist, but the list creates from
a non-push command, the blocked client never gets notified.

This commit adds notification of blocked clients into
the DB layer and away from individual commands.

Lists can be created by [LR]PUSH, SORT..STORE, RENAME, MOVE,
and RESTORE.  Previously, blocked client notifications were
only triggered by [LR]PUSH.  Your client would never get
notified if a list were created by SORT..STORE or RENAME or
a RESTORE, etc.

Blocked client notification now happens in one unified place:
  - dbAdd() triggers notification when adding a list to the DB

Two new tests are added that fail prior to this commit.

All test pass.

Fixes #1668

[1]: https://groups.google.com/forum/#!topic/redis-db/k4oWfMkN1NU
[2]: #1668
2014-06-09 11:38:55 +02:00
8b059f06d7 Cluster: check that configEpoch never goes back.
Since there are ways to alter the configEpoch outside of the failover
procedure (for exampel CLUSTER SET-CONFIG-EPOCH and via the configEpoch
collision resolution algorithm), make always sure, before replacing our
configEpoch with a new one, that it is greater than the current one.
2014-06-07 14:45:53 +02:00
67029323a3 Cluster: SET-CONFIG-EPOCH should update currentEpoch.
SET-CONFIG-EPOCH, used by redis-trib at cluster creation time, failed to
update the currentEpoch, making it possible after a failover for a
server to set its configEpoch to a value smaller than the current one
(since configEpochs are obtained using currentEpoch).

The bug totally break the Redis Cluster algorithms and protocols
allowing for permanent split brain conditions about the slots
configuration as shown in issue #1799.
2014-06-07 14:28:21 +02:00
531e577e2d Fixed typo in word avarege in result message of --intrinsic-latency analyzer 2014-06-06 11:20:00 +02:00
eca41f48d3 Small typo fixed 2014-06-06 10:45:44 +02:00
a20d5c50d0 Fix eval usage in tests to conform with eval semantics 2014-06-06 10:44:04 +02:00
a970f5ca70 fix issue 1787 2014-06-06 10:38:01 +02:00
9f5ab8699d Don't process min-slaves-to-write for slaves.
Replication is totally broken when a slave has this option, since it
stops accepting updates from masters.

This fixes issue #1434.
2014-06-05 10:50:33 +02:00
cfe2d563bc Tests for min-slaves-* feature. 2014-06-05 10:50:32 +02:00
751c8698d4 Fixed dbuf variable scope in luaRedisGenericCommand().
I'm not sure if while the visibility is the inner block, the fact we
point to 'dbuf' is a problem or not, probably the stack var isx
guaranteed to live until the function returns. However obvious code is
better anyway.
2014-06-04 18:58:56 +02:00
b71720772e Regression test for issue #1118. 2014-06-04 18:51:33 +02:00
c3967f42d7 Scripting: better Lua number -> string conversion in luaRedisGenericCommand().
The lua_to*string() family of functions use a non optimal format
specifier when converting integers to strings. This has both the problem
of the number being converted in exponential notation, which we don't
use as a Redis return value when floating point numbers are involed,
and, moreover, there is a loss of precision since the default format
specifier is not able to represent numbers that must be represented
exactly in the IEEE 754 number mantissa.

The new code handles it as a special case using a saner conversion.

This fixes issue #1118.
2014-06-04 18:45:45 +02:00
3614176349 More trailing spaces in sentinel.c removed. 2014-05-28 15:46:11 +02:00
53bc8a77d1 Cluster test: add tmp dir to Git repo. 3.0.0-beta5 2014-05-26 18:06:48 +02:00
033d717295 Fix test framework to detect proper server PID
Previously the PID format was:
[PID] Timestamp

But it recently changed to:
PID:X Timestamp

The tcl testing framework was grabbing the PID from \[\d+\], but
that's not valid anymore.

Now we grab the pid from "PID: <PID>" in the part of Redis startup
output to the right of the ASCII logo.
2014-05-26 17:58:49 +02:00
186adefd56 Disable recursive watchdog signal handler
If we are in the signal handler, we don't want to handle
the signal again.  In extreme cases, this can cause a stack overflow
and segfault Redis.

Fixes #1771
2014-05-26 17:53:37 +02:00
4fe4c4b34d Redis 2.9.54 (Redis 3.0.0 beta-5). 2014-05-26 16:38:11 +02:00
eea0d41fb9 Cluster: always allow ok -> fail switch in clusterUpdateState().
There is a time defined by REDIS_CLUSTER_WRITABLE_DELAY where fail -> ok
switch is not possible after startup as a master for some time, however
the contrary (ok -> fail) should always be possible.
2014-05-26 16:36:14 +02:00
672e2672aa Cluster test: catch FLUSHALL errors on node reset.
FLUSHALL will fail on read-only slaves, but there the command is not
needed in order to reset the instance with CLUSTER RESET so errors can
be ignored.
2014-05-26 16:36:11 +02:00
df0c8c28ad Sentinel example config: explain you don't need to specify slaves. 2014-05-26 10:18:04 +02:00
b5f0d0d6f9 Redis 2.9.53 (Redis 3.0.0 beta-4). 3.0.0-beta4 2014-05-23 16:08:38 +02:00
7f8ea7a50f Cluster test: basic failover unit added. 2014-05-23 15:54:53 +02:00
29aed9c48f Cluster test: move basic read/write test into a procedure. 2014-05-23 15:54:53 +02:00
81af783fec Cluster test: more reliable 01-faildet unit.
Do things in a sequence that prevents failover during failure detection.
2014-05-23 15:54:53 +02:00
e62e3c4cb2 3.0 Changelog typo fixed. lost -> list. 2014-05-23 09:49:45 +02:00
5697f4f85d Document log format change in 3.0 Changelog. 2014-05-23 09:28:32 +02:00
90bbf1159b redisLogFromHandler() format changed to match new logs format. 2014-05-23 09:26:04 +02:00
9996c37e74 Tag every log line with role.
Every log contains, just after the pid, a single character that provides
information about the role of an instance:

S - Slave
M - Master
C - Writing child
X - Sentinel
2014-05-23 09:26:04 +02:00
33f63ff988 Cluster: slave validity factor is now user configurable.
Check the commit changes in the example redis.conf for more information.
2014-05-23 09:26:04 +02:00
308c570e04 Test: AOF test false positive when running in slow hosts.
The bug was triggered by running the test with Valgrind (which is a lot
slower and more sensible to timing issues) after the recent changes
that made Redis more promptly able to reply with the -LOADING error.
2014-05-23 09:26:04 +02:00
1d70312028 Test: dump.tcl fixed for RESTORE new error msg. 2014-05-23 09:26:04 +02:00
0e1b5ff63b Fix an error in redis-trib where we always talk with same node.
While iterating the list of nodes we want to set the slot as stable in
the current node, not always in the first node of the list.
2014-05-23 09:26:04 +02:00
c268d1ebd5 redis-trib fix improved: move keys from N nodes to owner. 2014-05-23 09:26:04 +02:00
32ca949c76 redis-trib fix: use MIGRATE REPLACE when fixing slots.
This fixes issue #1765.
2014-05-23 09:26:04 +02:00
122157f220 Regression test for issue #1764. 2014-05-20 17:45:50 +02:00
d357e3ee8f Remove trailing spaces from scripting.c 2014-05-20 17:45:50 +02:00
d0c84acc97 Remove trailing spaces from sentinel.c. 2014-05-20 17:45:50 +02:00