Johan Bergström
ada7aa7ac9
Spaces to tabs
2013-03-16 18:35:20 +11:00
Johan Bergström
bea60bec75
Slightly refactor CFLAGS/LDFLAGS/LIBS
...
This way, we can avoid -rdynamic and -pthread warnings on darwin.
2013-03-16 18:33:42 +11:00
antirez
e28e61e839
Cluster: when failing over claim master slots.
2013-03-15 16:53:41 +01:00
antirez
b8127e337a
Version incremented to 2.9.8 after major cluster progresses.
2013-03-15 16:45:45 +01:00
antirez
dd091661d4
Cluster: log when a slave asks for failover authorization.
2013-03-15 16:44:08 +01:00
antirez
1375b0611b
Cluster: slaves start failover with a small delay.
...
Redis Cluster can cope with a minority of nodes not informed about the
failure of a master in time for some reason (netsplit or node not
functioning properly, blocked, ...) however to wait a few seconds before
to start the failover will make most "normal" failovers simpler as the
FAIL message will propagate before the slave election happens.
2013-03-15 16:39:49 +01:00
antirez
d512a09c20
Cluster: a bit more serious node role change handling.
2013-03-15 16:35:16 +01:00
antirez
004fbef847
Cluster: remove node from master slaves when it turns into a master.
...
Also, a few nearby comments improved.
2013-03-15 16:16:19 +01:00
antirez
44c92f5aeb
Cluster: slave failover implemented.
2013-03-15 16:11:34 +01:00
antirez
1d8f302e0d
Cluster: election -> promotion in two comments.
2013-03-15 15:44:49 +01:00
antirez
bf82195467
Cluster: added function to broadcast pings.
...
See the function top-comment for info why this is useful sometimes.
2013-03-15 15:43:58 +01:00
antirez
892e98548a
Cluster: don't broadcast messages to HANDSHAKE nodes.
...
Also don't check for NOADDR as we check that node->link is not NULL
that's enough.
2013-03-15 15:36:36 +01:00
antirez
76a3954f4a
Cluster: fix clusterHandleSlaveFailover() conditional: quorum is enough.
2013-03-15 13:20:34 +01:00
antirez
90e99a2082
Cluster: two lame bugs fixed in FAILOVER AUTH messages generation.
2013-03-14 21:27:12 +01:00
antirez
aeacaa57e6
Cluster: code to process messages moved in the right if-else chain.
2013-03-14 21:21:58 +01:00
antirez
35f05c66b6
Cluster: handle FAILOVER_AUTH_ACK messages.
...
That's trivial as we just need to increment the count of masters that
received with an ACK.
2013-03-14 16:43:13 +01:00
antirez
c2595500ac
Cluster: request failover authorization, log if we have quorum.
...
However the failover is yet not really performed.
2013-03-14 16:39:02 +01:00
antirez
7fa42b801d
Cluster: clusterSendFailoverAuth() implementation.
2013-03-14 16:31:57 +01:00
NanXiao
79a13b46fb
Update config.c
...
Fix bug in configGetCommand function: get correct masterauth value.
2013-03-14 13:52:43 +08:00
antirez
f59ff6fe61
Cluster: clusterSendFailoverAuthIfNeeded() work in progress.
2013-03-13 19:08:03 +01:00
antirez
44f6fdab60
Cluster: handle FAILOVER_AUTH_REQUEST in clusterProcessPacket().
...
However currently the control is passed to a function doing nothing at
all.
2013-03-13 18:38:08 +01:00
antirez
ece95b2dea
Cluster: sanity check FAILOVER_AUTH_REQUEST messages for proper length.
2013-03-13 17:31:26 +01:00
antirez
66144337bf
Cluster: use 'else if' for mutually exclusive conditionals.
2013-03-13 17:27:06 +01:00
antirez
db7c17e969
Cluster: FAILOVER_AUTH_REQUEST message type introduced.
...
This message is sent by a slave that is ready to failover its master to
other nodes to get the authorization from the majority of masters.
2013-03-13 17:21:20 +01:00
antirez
575cbc9990
Cluster: clusterHandleSlaveFailover() stub.
2013-03-13 13:10:49 +01:00
antirez
1902a9c532
Replication: master_link_down_since_seconds initial value should be huge.
...
server.repl_down_since used to be initialized to the current time at
startup. This is wrong since the replication never started. Clients
testing this filed to check if data is uptodate should never believe
data is recent if we never ever connected to our master.
2013-03-13 12:54:48 +01:00
antirez
3d448bda39
Cluster: call clusterHandleSlaveFailover() when our master is down.
2013-03-13 12:44:02 +01:00
antirez
ae94fe7e48
Test: make sure broken RDB checksum is detected.
2013-03-13 11:12:45 +01:00
antirez
82b0eae690
Test: more RDB loading checks.
...
A test for issue #1001 is included.
2013-03-13 10:04:33 +01:00
antirez
0b74a85678
Test: check that Redis starts empty without an RDB file.
2013-03-12 19:55:33 +01:00
antirez
79a6844e44
rdbLoad(): rework code to save vertical space.
2013-03-12 19:46:33 +01:00
Salvatore Sanfilippo
9925c7c670
Merge pull request #1001 from djanowski/fatal-errors-rdb-load
...
Abort when opening the RDB file results in an error other than ENOENT.
2013-03-12 11:40:36 -07:00
Damian Janowski
4178a80282
Abort when opening the RDB file results in an error other than ENOENT.
...
This fixes cases where the RDB file does exist but can't be accessed for
any reason. For instance, when the Redis process doesn't have enough
permissions on the file.
2013-03-12 14:37:50 -03:00
antirez
215bfaea16
Set default for stop_writes_on_bgsave_err in initServerConfig().
...
It was placed for error in initServer() that's called after the
configuation is already loaded, causing issue #1000 .
2013-03-12 18:34:08 +01:00
antirez
91d3b487e7
redis-cli --bigkeys: don't crash with empty DBs.
2013-03-12 09:58:00 +01:00
antirez
2d851333a6
activeExpireCycle() smarter with many DBs and under expire pressure.
...
activeExpireCycle() tries to test just a few DBs per iteration so that
it scales if there are many configured DBs in the Redis instance.
However this commit makes it a bit smarter when one a few of those DBs
are under expiration pressure and there are many many keys to expire.
What we do is to remember if in the last iteration had to return because
we ran out of time. In that case the next iteration we'll test all the
configured DBs so that we are sure we'll test again the DB under
pressure.
Before of this commit after some mass-expire in a given DB the function
tested just a few of the next DBs, possibly empty, a few per iteration,
so it took a long time for the function to reach again the DB under
pressure. This resulted in a lot of memory being used by already expired
keys and never accessed by clients.
2013-03-11 11:10:33 +01:00
antirez
08b107e405
In databasesCron() never test more DBs than we have.
2013-03-11 10:51:03 +01:00
antirez
4b1ccdfd49
Make comment name match var name in activeExpireCycle().
2013-03-11 10:42:14 +01:00
antirez
1f7d2c1e27
Optimize inner loop of activeExpireCycle() for no-expires case.
2013-03-09 11:48:54 +01:00
antirez
5f5aa487f9
REDIS_DBCRON_DBS_PER_SEC -> REDIS_DBCRON_DBS_PER_CALL
2013-03-09 11:44:20 +01:00
antirez
db29d71a30
activeExpireCycle(): process only a small number of DBs per iteration.
...
This small number of DBs is set to 16 so actually in the default
configuraiton Redis should behave exactly like in the past.
However the difference is that when the user configures a very large
number of DBs we don't do an O(N) operation, consuming a non trivial
amount of CPU per serverCron() iteration.
2013-03-08 17:48:58 +01:00
antirez
40a2da159c
Use unsigned integers for DB ids, for defined wrap-to-zero.
2013-03-08 17:41:20 +01:00
antirez
7ac3b3a486
Only resize/rehash a few databases per cron iteration.
...
This is the first step to lower the CPU usage when many databases are
configured. The other is to also process a limited number of DBs per
call in the active expire cycle.
2013-03-08 14:01:12 +01:00
antirez
dfd732dff3
Actually call databasesCron() inside serverCron().
2013-03-08 13:59:50 +01:00
antirez
cd9dcd1835
Move Redis databases background processing to databasesCron().
2013-03-08 12:34:05 +01:00
antirez
f0b807cd47
Cluster: update cluster state on PFAIL flag set/cleared on nodes.
2013-03-07 15:40:53 +01:00
antirez
299b8f76c2
Cluster: mark cluster state as fail of majority of masters is unreachable.
2013-03-07 15:36:59 +01:00
antirez
abf06fd5ff
Cluster: log global cluster state change.
2013-03-07 15:22:32 +01:00
antirez
3dad8196b7
Cluster: clusterUpdateState() function simplified.
...
Also the NEEDHELP Cluster state was removed as it will no longer be
used by Redis Cluster.
2013-03-06 18:25:40 +01:00
Gengliang Wang
042ed270c8
Removed useless "return" statements in pubsub.c
...
(original commit message edited)
2013-03-06 16:49:20 +01:00