5955 Commits

Author SHA1 Message Date
antirez
923098bbda Fix replicas migration by adding a new flag.
Some time ago I broken replicas migration (reported in #2924).
The idea was to prevent masters without replicas from getting replicas
because of replica migration, I remember it to create issues with tests,
but there is no clue in the commit message about why it was so
undesirable.

However my patch as a side effect totally ruined the concept of replicas
migration since we want it to work also for instances that, technically,
never had slaves in the past: promoted slaves.

So now instead the ability to be targeted by replicas migration, is a
new flag "migrate-to". It only applies to masters, and is set in the
following two cases:

1. When a master gets a slave, it is set.
2. When a slave turns into a master because of fail over, it is set.

This way replicas migration targets are only masters that used to have
slaves, and slaves of masters (that used to have slaves... obviously)
and are promoted.

The new flag is only internal, and is never exposed in the output nor
persisted in the nodes configuration, since all the information to
handle it are implicit in the cluster configuration we already have.
2015-12-09 23:03:18 +01:00
antirez
3e9f8ae87e Fix typo UNCOMMENT -> COMMENT in example redis.conf. 2015-12-03 11:03:20 +01:00
antirez
4623c72b54 Centralize slave replication handshake aborting.
Now we have a single function to call in any state of the slave
handshake, instead of using different functions for different states
which is error prone. Change performed in the context of issue #2479 but
does not fix it, since should be functionally identical to the past.
Just an attempt to make replication.c simpler to follow.
2015-12-03 10:38:56 +01:00
antirez
74f83badbf Test HINCRBYFLOAT rounding only in x86_64 and when valgrind is not in use.
64 bit double math is not enough to make the test passing, and rounding
to 1.2999999 instead of 1.23 is not an error in the implementation.
Valgrind and sometimes other archs are not able to work with 80 bit
doubles.
2015-11-28 09:28:37 +01:00
antirez
6990638623 fix sprintf and snprintf format string
There are some cases of printing unsigned integer with %d conversion
specificator and vice versa (signed integer with %u specificator).

Patch by Sergey Polovko. Backported to Redis from Disque.
2015-11-28 09:05:41 +01:00
antirez
0169de0b25 Fix typo in prepareClientToWrite() comment. 2015-11-27 16:17:21 +01:00
antirez
a8e014a466 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2015-11-27 16:12:23 +01:00
antirez
e3c11c1198 Handle wait3() errors.
My guess was that wait3() with WNOHANG could never return -1 and an
error. However issue #2897 may possibly indicate that this could happen
under non clear conditions. While we try to understand this better,
better to handle a return value of -1 explicitly, otherwise in the
case a BGREWRITE is in progress but wait3() returns -1, the effect is to
match the first branch of the if/else block since server.rdb_child_pid
is -1, and call backgroundSaveDoneHandler() without a good reason, that
will, in turn, crash the Redis server with an assertion.
2015-11-27 16:11:05 +01:00
Salvatore Sanfilippo
1298e7e079 Merge pull request #2899 from itamarhaber/patch-1
Revert Lua's `redis.LOG_<level>` to original
2015-11-27 15:46:16 +01:00
Itamar Haber
ebaff08613 Revert Lua's redis.LOG_<level> to original
Fixes #2898
2015-11-27 15:55:38 +02:00
antirez
3c5a6bd0b2 Redis Cluster: hint about validity factor when slave can't failover. 2015-11-27 08:59:17 +01:00
antirez
d5b1a97f67 Added Tcl program to show commits graphicaly.
Used to generate http://antirez.com/news/98.
2015-11-20 15:45:25 +01:00
antirez
ba7f378da0 Lua debugger: infinite loop detection. 2015-11-18 10:23:49 +01:00
antirez
4ab3cff9be Lua debugger: fix trace command infinite loop.
Thanks to Itamar Haber for bug report and test case to reproduce.
2015-11-17 16:24:27 +01:00
antirez
9e0ad3382a Lua debugger: redis-cli: allow restart after end of session. 2015-11-17 15:43:24 +01:00
antirez
5d2a9bd353 Lua debugger: redis-cli can restart Lua debugging sessions. 2015-11-17 15:43:24 +01:00
antirez
57f51983b1 Lua debugger: maxlen command implemented.
Let the user control the replies truncation.
2015-11-17 15:43:24 +01:00
antirez
06db360f1d Lua debugger: trace command implemented. 2015-11-17 15:43:24 +01:00
antirez
94c98e0d21 Lua debugger: redis-cli: show compile errors in LDB mode. 2015-11-17 15:43:24 +01:00
antirez
7b71a14380 Lua debugger: print without args show all local vars. 2015-11-17 15:43:23 +01:00
antirez
c0a0e2c26f Lua debugger: default behavior of "list" command changed.
Now it lists code around the current position by default. Can list any
other part using other arguments, but a new "whole" command was added in
order to show the whole source code easily.
2015-11-17 15:43:23 +01:00
antirez
c5740bdb22 Lua debugger: redis-cli error when --ldb is without --eval.
Otherwise the result is a messed CLI without prompt.
Thanks to Itamar Haber for reporting this issue.
2015-11-17 15:43:23 +01:00
antirez
e88759f742 Lua debugger: use sds_malloc() to allocate eval cli array.
Redis-cli handles the debugger "eval" command in a special way since
sdssplitargs() would not be ok: we need to send the Redis debugger the
whole Lua script without any parsing. However in order to later free the
argument vector inside redis-cli using just sdsfreesplitres(), we need
to allocate the array of SDS pointers using the same allocator SDS is
using, that may differ to what Redis is using.

So now a newer version of SDS exports sds_malloc() and other allocator
functions to give access, to the program it is linked to, the allocator
used internally by SDS.
2015-11-17 15:43:23 +01:00
antirez
ab792f66b0 Lua debugging: fix error message for SCRIPT DEBUG.
"async" -> "sync".

Thanks to Itamar Haber for reporting.
2015-11-17 15:43:23 +01:00
antirez
030f64f5f6 Lua debugger: reply +OK to SCRIPT DEBUG no.
Thanks to Itamar Haber for reporting.
2015-11-17 15:43:23 +01:00
antirez
76fd26e778 Lua debugger: call wait3() if there are pending forked debugging sessions. 2015-11-17 15:43:23 +01:00
antirez
d18ba0a14b Lua debugger: abort implemented. 2015-11-17 15:43:23 +01:00
antirez
be3d13cb1c Lua debugger: ldbSendLogs() memory leak fixed. 2015-11-17 15:43:23 +01:00
antirez
2f64b9d5d8 Lua debugger: better support for synchronous mode. 2015-11-17 15:43:22 +01:00
antirez
5c05038252 Lua debugger: handle forked sessions children during shutdown. 2015-11-17 15:43:22 +01:00
antirez
2ffb706841 Lua debugger: inform user changes are rolled back.
When redis-cli will support the synchronous mode, this will not be
printed.
2015-11-17 15:43:22 +01:00
antirez
42aa5b768a Lua debugger: fix help typo, beark -> break. 2015-11-17 15:43:22 +01:00
antirez
b2e30575e2 Lua debugger: clear end of session protocol.
When the debugger exits now it produces an <endsession> tag that informs
redis-cli (or other debugging clients) that the session terminated.
This way the client knows there is yet another reply to read (the one of
the EVAL script itself), and can switch to non-debugging mode ASAP.
2015-11-17 15:43:22 +01:00
antirez
bbb8a712c7 Lua debugger: redis.debug() implemented. 2015-11-17 15:43:22 +01:00
antirez
6a5c20e2ac Lua debugger: redis-cli, mark end of debugging session. 2015-11-17 15:43:22 +01:00
antirez
eff4ea27a7 Lua debugger: removing breakpoints now works. 2015-11-17 15:43:22 +01:00
antirez
63acf80344 Lua debugger: redis command implemented. 2015-11-17 15:43:22 +01:00
antirez
5b43ff2e5b Lua debugger: try to eval as expression first.
It's handly to just eval "5+5" without the return and see it printed on
the screen as result. However prepending "return" does not always result
into valid Lua code. So what we do is to exploit a common Lua community
trick of trying to compile with return prepended, and if compilation
fails then it's not an expression that can be returned, so we try again
without prepending "return". Works great apparently.
2015-11-17 15:43:21 +01:00
antirez
02e8af90fb Lua debugger: much better Lua values pretty printer. 2015-11-17 15:43:21 +01:00
antirez
40e8b39bbb Lua debugger: print now handles ARGV and KEYS. 2015-11-17 15:43:21 +01:00
antirez
84d6160eb8 Lua debugger: added comment about helper functions. 2015-11-17 15:43:21 +01:00
antirez
717d6de03f Lua debugger: redis.breakpoint() implemented. 2015-11-17 15:43:21 +01:00
antirez
1b70a303c6 Lua debugger: output improvements, eval command. 2015-11-17 15:43:21 +01:00
antirez
4c2fa9adcf Lua debugger: breakpoints. 2015-11-17 15:43:21 +01:00
antirez
a88e1f748b Lua debugger: ability to show local vars content. 2015-11-17 15:43:21 +01:00
antirez
2cbcb0996a Lua debugger: log Redis commands. List command. 2015-11-17 15:43:21 +01:00
antirez
e897b0142d Lua debugger: initial REPL. 2015-11-17 15:43:20 +01:00
antirez
063bbc8074 Lua debugger: foundations implemented. 2015-11-17 15:43:20 +01:00
antirez
6adc1fe86a Remove "s" flag for MIGRATE in command table.
Maybe there are legitimate use cases for MIGRATE inside Lua scripts, at
least for now. When the command will be executed in an asynchronous
fashion (planned) it is possible we'll no longer be able to permit it
from within Lua scripts.
2015-11-17 15:43:13 +01:00
antirez
0260c0489d Update redis-cli help and the script to generate it. 2015-11-17 15:38:34 +01:00