Commit Graph

6588 Commits

Author SHA1 Message Date
artix
3fce4301ec Cluster Manager: code improvements and more comments added. 2018-04-19 18:52:01 +02:00
artix
07bd371087 Cluster Manager: set-timeout command 2018-04-13 16:09:22 +02:00
artix
551f8f0591 - Cluster Manager: del-node command.
- Cluster Manager: fixed bug in clusterManagerNodeWithLeastReplicas
2018-04-11 18:23:28 +02:00
artix
615aefe6ba Cluster Manager: add-node command. 2018-04-11 17:08:53 +02:00
artix
81ab5a3b28 Cluster Manager: added clusterManagerCheckCluster to import command 2018-04-10 16:53:24 +02:00
artix
eaaa3202e6 Cluster Manager: import command 2018-04-10 16:25:25 +02:00
artix
8969254e66 Cluster Manager: fix command. 2018-04-06 18:02:40 +02:00
artix
d8fc307cc6 Cluster Manager: rebalance command 2018-03-23 16:46:43 +01:00
artix
a4cfd503ea clusterManagerAddSlots: changed the way ADDSLOTS command is built 2018-03-06 13:06:04 +02:00
artix
d518733073 ClusterManager: fixed --cluster-from 'all' parsing 2018-03-02 17:06:50 +01:00
Artix
ce14d23740 Cluster Manager: fixed some memory error 2018-02-28 15:21:08 +01:00
artix
fb41b8bb9c Fixed memory write error in clusterManagerGetConfigSignature 2018-02-28 11:49:10 +01:00
artix
2f056b8331 Cluster Manager: reshard command, fixed slots
parsing bug and other minor bugs.
2018-02-28 10:44:14 +01:00
artix
8f4f001dc3 Cluster Manager:
- Almost all Cluster Manager related code moved to
  the same section.
- Many macroes converted to functions
- Added various comments
- Little code restyling
2018-02-22 18:35:40 +01:00
artix
87f5a7c0b4 - Fixed bug in clusterManagerGetAntiAffinityScore
- Code improvements
2018-02-22 18:35:40 +01:00
artix
605d7262e6 Cluster Manager: colorized output 2018-02-22 18:35:40 +01:00
artix
4ca8dbdc2b Cluster Manager: improved cleanup/error handling in various functions 2018-02-22 18:35:40 +01:00
artix
8128f1bf03 Cluster Manager: 'call' command. 2018-02-22 18:35:40 +01:00
artix
7b9f945b37 Cluster Manager: CLUSTER_MANAGER_NODE_CONNECT macro 2018-02-22 18:35:40 +01:00
artix
dad69ac320 ClusterManager: added replicas count to clusterManagerNode 2018-02-22 18:35:40 +01:00
artix
956bec4ca8 Cluster Manager: cluster is considered consistent if only one node has been found 2018-02-22 18:35:40 +01:00
artix
1b1f80e60f Cluster Manager: reply error catch for MEET command 2018-02-22 18:35:40 +01:00
artix
be7e2b84bd Cluster Manager: slots coverage check. 2018-02-22 18:35:40 +01:00
artix
d38045805d - Cluster Manager: fixed various memory leaks
- Cluster Manager: fixed flags assignment in
  clusterManagerNodeLoadInfo
2018-02-22 18:35:40 +01:00
artix
74dcd14d13 Added check for open slots (clusterManagerCheckCluster) 2018-02-22 18:35:40 +01:00
artix
bafdc1a56c Cluster Manager: 'create', 'info' and 'check' commands 2018-02-22 18:35:40 +01:00
artix
1dd67ebceb Cluster Manager mode 2018-02-22 18:35:39 +01:00
antirez
ffde73c57d Track number of logically expired keys still in memory.
This commit adds two new fields in the INFO output, stats section:

expired_stale_perc:0.34
expired_time_cap_reached_count:58

The first field is an estimate of the number of keys that are yet in
memory but are already logically expired. They reason why those keys are
yet not reclaimed is because the active expire cycle can't spend more
time on the process of reclaiming the keys, and at the same time nobody
is accessing such keys. However as the active expire cycle runs, while
it will eventually have to return to the caller, because of time limit
or because there are less than 25% of keys logically expired in each
given database, it collects the stats in order to populate this INFO
field.

Note that expired_stale_perc is a running average, where the current
sample accounts for 5% and the history for 95%, so you'll see it
changing smoothly over time.

The other field, expired_time_cap_reached_count, counts the number
of times the expire cycle had to stop, even if still it was finding a
sizeable number of keys yet to expire, because of the time limit.
This allows people handling operations to understand if the Redis
server, during mass-expiration events, is able to collect keys fast
enough usually. It is normal for this field to increment during mass
expires, but normally it should very rarely increment. When instead it
constantly increments, it means that the current workloads is using
a very important percentage of CPU time to expire keys.

This feature was created thanks to the hints of Rashmi Ramesh and
Bart Robinson from Twitter. In private email exchanges, they noted how
it was important to improve the observability of this parameter in the
Redis server. Actually in big deployments, the amount of keys that are
yet to expire in each server, even if they are logically expired, may
account for a very big amount of wasted memory.
2018-02-19 11:12:49 +01:00
antirez
aa57481d8c Remove non semantical spaces from module.c. 2018-02-15 21:41:03 +01:00
Salvatore Sanfilippo
7830f8492f
Merge pull request #4479 from dvirsky/notify
Keyspace notifications API for modules
2018-02-15 21:36:32 +01:00
antirez
f4dc736cca Fix typo in notifyKeyspaceEvent() comment. 2018-02-15 21:33:06 +01:00
Dvir Volk
0a36196ce4 Add doc comment about notification flags 2018-02-14 21:54:00 +02:00
Dvir Volk
10efdf307b Add REDISMODULE_NOTIFY_STREAM flag to support stream notifications 2018-02-14 21:50:42 +02:00
Dvir Volk
613831f820 Fix indentation and comment style in testmodule 2018-02-14 21:43:06 +02:00
Dvir Volk
f27a64232e Use one static client for all keyspace notification callbacks 2018-02-14 21:40:10 +02:00
Dvir Volk
3aab12414f Remove the NOTIFY_MODULE flag and simplify the module notification flow if there aren't subscribers 2018-02-14 21:40:10 +02:00
Dvir Volk
a8e2e99a88 Document flags for notifications 2018-02-14 21:38:58 +02:00
Dvir Volk
d4d753dae4 removed some trailing whitespaces 2018-02-14 21:38:58 +02:00
Dvir Volk
5b7b12e38f removed hellonotify.c 2018-02-14 21:38:58 +02:00
Dvir Volk
896db12b41 fixed test 2018-02-14 21:38:58 +02:00
Dvir Volk
2136035e47 finished implementation of notifications. Tests unfinished 2018-02-14 21:38:58 +02:00
Salvatore Sanfilippo
4f2d279dd7
Merge pull request #4685 from charsyam/refactoring/set_max_latency
Removing duplicated code to set max latency
2018-02-13 16:20:32 +01:00
charsyam
9d41436115 getting rid of duplicated code 2018-02-14 00:12:13 +09:00
antirez
ae29bcd8e2 More verbose logging when slave sends errors to master.
See #3832.
2018-02-13 16:01:31 +01:00
Salvatore Sanfilippo
756df19134
Merge pull request #3832 from oranagra/slave_reply_to_master_pr
when a slave responds with an error on commands that come from master, log it
2018-02-13 15:55:26 +01:00
Salvatore Sanfilippo
f9e6c2046f
Merge pull request #3745 from guybe7/unstable
enlarged buffer given to ld2string
2018-02-13 15:50:21 +01:00
antirez
c14ba46e3a Make it explicit with a comment why we kill the old AOF rewrite.
See #3858.
2018-02-13 15:43:34 +01:00
Guy Benoish
f782006782 rewriteAppendOnlyFileBackground() failure fix
It is possible to do BGREWRITEAOF even if appendonly=no. This is by design.
stopAppendonly() didn't turn off aof_rewrite_scheduled (it can be turned on
again by BGREWRITEAOF even while appendonly is off anyway).
After configuring `appendonly yes` it will see that the state is AOF_OFF,
there's no RDB fork, so it will do rewriteAppendOnlyFileBackground() which
will fail since the aof_child_pid is set (was scheduled and started by cron).

Solution:
stopAppendonly() will turn off the schedule flag (regardless of who asked for it).
startAppendonly() will terminate any existing fork and start a new one (so it is the most recent).
2018-02-13 15:41:06 +01:00
Salvatore Sanfilippo
480d4af1e7
Merge pull request #4684 from oranagra/latency_monitor_max
fix to latency monitor reporting wrong max latency
2018-02-13 15:31:11 +01:00
Oran Agra
8e8d957ff8 fix to latency monitor reporting wrong max latency
in some cases LATENCY HISTORY reported latency that was
higher than the max latency reported by LATENCY LATEST / DOCTOR
2018-02-13 15:58:40 +02:00