antirez
e7628be2a7
Cluster: set node->slaveof correctly when a node state is updated.
2013-03-05 11:50:11 +01:00
antirez
d6457577d4
Cluster: don't perform startup slots sanity check for slaves.
...
If we are a cluster node the DB content will not match our configured
slots. Don't do the check at all.
2013-03-04 19:47:00 +01:00
antirez
d334897e80
Cluster: fix maximum line length when loading config.
...
There are pathological cases where the line can be even longer a single
node may contain all the slots in importing/migrating state.
2013-03-04 19:45:36 +01:00
antirez
b8a28bf442
Cluster: actually setup replication in CLUSTER REPLICATE.
2013-03-04 15:27:58 +01:00
antirez
0c01088b51
Cluster: REPLICATE subcommand and stub for clusterSetMaster().
2013-03-04 13:15:09 +01:00
charsyam
bc84c399f8
adding check error code
...
adding check error code
2013-03-04 11:20:11 +01:00
antirez
caf9b24a7d
Cluster: don't set the slot as unassigned because of PONG info.
...
As stated in the comment this is usually due to a resharding in progress
so the client should be still redirected to the old node that will
handle the redirection elsewhere.
2013-02-28 15:54:29 +01:00
antirez
0d77440b26
Cluster: better handling of slots changes in PONG packets.
...
The new code makes sure that the node slots bitmap is always consistent
with the cluster->slots array.
2013-02-28 15:41:54 +01:00
antirez
5f8fd27ace
Cluster: refactoring of clusterNode*Bit to use helper bitmap functions.
2013-02-28 15:23:09 +01:00
antirez
d21d6b666f
Cluster: use node->numslots instead of popcount() where possible.
2013-02-28 15:13:32 +01:00
antirez
4521115b17
Cluster: new field in cluster node structure, "numslots".
...
Before a relatively slow popcount() operation was needed every time we
needed to get the number of slots served by a given cluster node.
Now we just need to check an integer that is taken in sync with the
bitmap.
2013-02-28 15:11:05 +01:00
antirez
a2566d6618
Cluster: don't gossip about nodes that are not useful to the cluster.
2013-02-28 15:00:09 +01:00
antirez
d45d184118
Cluster: CLUSTER FORGET implemented.
2013-02-27 17:55:59 +01:00
antirez
d2b8281b3f
Cluster: added a missing return on CLUSTER SETSLOT.
2013-02-27 17:53:48 +01:00
antirez
d20dea3eb7
Cluster: blank node address when flagging it as NOADDR.
2013-02-27 17:09:33 +01:00
antirez
2dcb5ab72b
Cluster: add comments in sub-sections of CLUSTER command.
2013-02-27 16:12:59 +01:00
antirez
f9b5ca29fd
Use GCC printf format attribute for redisLog().
...
This commit also fixes redisLog() statements producing warnings.
2013-02-27 12:27:15 +01:00
antirez
d0992d6e8b
Cluster: a few random fixes to the new failure detection.
2013-02-26 15:15:44 +01:00
antirez
f288b07563
Cluster: log the event when we clear the FAIL flag.
2013-02-26 15:03:38 +01:00
antirez
97ffcd351b
Cluster: use the failure report API to reimplement failure detection.
...
The new system detects a failure only when there is quorum from masters.
2013-02-26 14:58:39 +01:00
antirez
1b1b3f6c06
Cluster: invert two functions declarations in more natural order.
2013-02-26 11:19:48 +01:00
antirez
d5e8b0a47f
Cluster: cleanup idle failure reports every time we remove one.
...
This is not very important as anyway when the function counting the
number of reports is called the cleanup is performed. However with this
change if only part of the nodes that reported the failure will report
the node is back ok, we'll cleanup the older entries ASAP. In complex
split net split scenarios, and when we are dealing with clusters having
nodes in the order of ~ 1000, this can save some CPU.
2013-02-26 11:15:18 +01:00
antirez
9cb578ced0
Cluster: new function clusterNodeDelFailureReport() for failure reports.
...
This is the missing part of the API that will be used to reimplement
failure detection of Cluster nodes.
2013-02-25 19:13:22 +01:00
antirez
18f537083a
Cluster: no limits for the count parameter of CLUSTER GETKEYSINSLOT.
...
Not sure why I set a limit to 1 million keys, there is no reason for
this artificial limit, and anyway this is s a stupid limit because it is
already high enough to create latency issues. So let's the users shoot
on their feet because maybe they just actually know what they are doing.
2013-02-25 12:41:13 +01:00
antirez
544bbe5387
Cluster: validate slot number in CLUSTER COUNTKEYSINSLOT.
2013-02-25 12:40:32 +01:00
antirez
d4fa40655d
Cluster: new sub-command CLUSTER COUNTKEYSINSLOT.
...
The new sub-command uses the new countKeysInSlot() API and allows a
cluster client to get the number of keys for a given hashslot.
2013-02-25 12:04:31 +01:00
antirez
a517c89321
Cluster: verifyClusterConfigWithData() implemented.
2013-02-25 11:43:49 +01:00
antirez
d2154254be
Cluster: fix case for getKeysInSlot() and countKeysInSlot().
...
Redis functions start in low case. A few functions about cluster were
capitalized the wrong way.
2013-02-25 11:25:40 +01:00
antirez
c2eb4a606f
Cluster: use CountKeysInSlot() when we just need the count.
2013-02-25 11:23:04 +01:00
antirez
ad3bca1fdf
Cluster: added stub for verifyClusterConfigWithData().
...
See the top-comment for the function in this commit for details about
what the function is supposed to do.
2013-02-25 11:20:17 +01:00
antirez
825e07f2fd
Cluster: if no previous config exists, create the myself node as master.
2013-02-22 19:24:01 +01:00
antirez
f4093753e4
Cluster: add cluster_size field in CLUSTER INFO output.
2013-02-22 19:20:38 +01:00
antirez
d218a4e244
Cluster: new state information, cluster size.
...
The definition of cluster size is: the number of known nodes in the
cluster that are masters and serving at least an hash slot.
2013-02-22 19:18:30 +01:00
antirez
5c55ed9388
Cluster: remove warning adding clusterNodeSetSlotBit() prototype.
2013-02-22 17:45:49 +01:00
antirez
974929770b
Cluster: introduced a failure reports system.
...
A §Redis Cluster node used to mark a node as failing when itself
detected a failure for that node, and a single acknowledge was received
about the possible failure state.
The new API will be used in order to possible to require that N other
nodes have a PFAIL or FAIL state for a given node for a node to set it
as failing.
2013-02-22 17:43:35 +01:00
antirez
07b6322735
Cluster: more correct update of slots state when PONG is received.
2013-02-21 16:52:06 +01:00
antirez
c6da9d9fac
Call clusterUpdateState() after CLUSTER SETSLOT too.
2013-02-21 16:31:22 +01:00
antirez
3a99d1228a
Aesthetic change to make a line more 80-cols friendly.
2013-02-21 16:24:48 +01:00
antirez
dc4af60628
Cluster: clusterAddSlot() was not doing what stated in the comment.
2013-02-21 11:51:17 +01:00
antirez
fdb57233e2
Cluster: always use cluster(Add|Del)Slot to modify the cluster slots table.
2013-02-21 11:44:58 +01:00
antirez
786b8d6c87
Use RESTORE-ASKING for MIGRATE when in cluster mode.
2013-02-20 17:36:54 +01:00
antirez
ea7fc82a4a
Cluster: new command flag forcing implicit ASKING.
...
Also using this new flag the RESTORE-ASKING command was implemented that
will be used by MIGRATE.
2013-02-20 17:28:35 +01:00
antirez
9a04e12cc0
Cluster: I/O errors are now logged at DEBUG level.
2013-02-20 13:18:51 +01:00
antirez
02796ba7a7
Cluster: sanity checks on the cluster bus message length.
2013-02-15 16:44:39 +01:00
antirez
6b9c661838
Cluster: make valgrind happy initializing all the bytes of the node IP.
2013-02-15 12:58:35 +01:00
antirez
7371d5e248
Remove wrong decrRefCount() from getNodeByQuery().
...
This fixes issue #607 .
2013-02-15 11:57:53 +01:00
antirez
20f52b5b78
Top comment for getNodeByQuery() improved.
2013-02-15 11:50:54 +01:00
antirez
e0e15bd06d
Cluster: with 16384 slots we need bigger buffers.
2013-02-14 15:36:33 +01:00
antirez
1649e509c3
Cluster: the cluster state structure is now heap allocated.
2013-02-14 13:20:56 +01:00
antirez
9dfd11c3da
Cluster: Initialize ip and port in createClusterNode().
2013-02-14 13:01:28 +01:00