6954 Commits

Author SHA1 Message Date
antirez
96fad23879 CG: implement XCLAIM FORCE option. 2018-03-15 12:54:10 +01:00
antirez
038488c0c4 CG: XCLAIM now updates the idle time of the message. 2018-03-15 12:54:10 +01:00
antirez
2966aac16d Streams: trap more errors in stream loading + RDB check type name. 2018-03-15 12:54:10 +01:00
antirez
18f8c34d4a CG: XCLAIM, use minidle and fix array len. 2018-03-15 12:54:10 +01:00
antirez
8348d92e56 CG: remove unused argument from streamReplyWithRangeFromConsumerPEL(). 2018-03-15 12:54:10 +01:00
antirez
431e12a033 CG: fix RDB saving when there are no consumer groups. 2018-03-15 12:54:10 +01:00
antirez
591e3f031d Streams: fix error description for XADD when specified ID is small. 2018-03-15 12:54:10 +01:00
antirez
096350cf33 CG: XCLAIM initial draft. 2018-03-15 12:54:10 +01:00
antirez
bab33460ab Make addReplyError...() family functions able to get error codes.
Now you can use:

    addReplyError("-MYERRORCODE some message");

If the error code is omitted, the behavior is like in the past,
the generic -ERR will be used.
2018-03-15 12:54:10 +01:00
antirez
75ad54c9a2 CG: test XACK remaining features. 2018-03-15 12:54:10 +01:00
antirez
c3396a6c8d CG: test XACK ability to remove items from the PELs. 2018-03-15 12:54:10 +01:00
antirez
08ea1440cf CG: test XPENDING ability to return pending items. 2018-03-15 12:54:10 +01:00
antirez
b1aa4a5c8b CG: test XGROUPREAD abilities. 2018-03-15 12:54:10 +01:00
antirez
e780693add CG: test group creation. 2018-03-15 12:54:10 +01:00
antirez
dfff06af91 CG: More specific duplicated group error. 2018-03-15 12:54:10 +01:00
antirez
81f45896d0 CG: RDB loading, fix inverted conditional. 2018-03-15 12:54:10 +01:00
antirez
84667bff70 CG: RDB loading first implementation. 2018-03-15 12:54:10 +01:00
antirez
76b264dd7e CG: RDB saving part 2, consumers. 2018-03-15 12:54:10 +01:00
antirez
3763d5c164 CG: RDB saving part 1, metadata and PEL. 2018-03-15 12:54:10 +01:00
antirez
ec0faf1bd9 CG: XPENDING should not create consumers and obey to count. 2018-03-15 12:54:10 +01:00
antirez
c0cf16f988 CG: XPENDING with start/stop/count variant implemented. 2018-03-15 12:54:10 +01:00
antirez
af40a25c52 CG: XPENDING without start/stop variant implemented. 2018-03-15 12:54:10 +01:00
antirez
505520ab09 CG: Now XREADGROUP + blocking operations work. 2018-03-15 12:54:10 +01:00
antirez
797d4df6fd CG: XACK should return zero when nothing is processed. 2018-03-15 12:54:10 +01:00
antirez
c6ec6fb82a CG: XACK implementation. 2018-03-15 12:54:10 +01:00
antirez
34d41d8aa5 CG: XREADGROUP can fetch data from the consumer PEL. 2018-03-15 12:54:10 +01:00
antirez
68a8dbb256 CG: first draft of streamReplyWithRangeFromConsumerPEL(). 2018-03-15 12:54:10 +01:00
antirez
9292fee76f CG: Fix order of calls in streamReplyWithRange().
We need to check if we are going to serve the request via the PEL before
inserting a deferred array len in the client output buffer.
2018-03-15 12:54:10 +01:00
antirez
4a5eaaeb76 CG: creation of NACK entries in PELs. 2018-03-15 12:54:10 +01:00
antirez
4de6308f6e CG: fix XREADGROUP ">" special ID parsing due to missing "continue". 2018-03-15 12:54:10 +01:00
antirez
5fa401d531 CG: streamCompareID() + group last_id updating. 2018-03-15 12:54:10 +01:00
antirez
6648d60246 CG: consumer lookup + initial streamReplyWithRange() work to supprot CG. 2018-03-15 12:54:10 +01:00
antirez
f7fbc91be3 CG: add & populate group+consumer in the blocking state. 2018-03-15 12:54:10 +01:00
antirez
2cf40e99f2 CG: fix parsing in XREADGROUP and streamLookupCG() NULL check. 2018-03-15 12:54:10 +01:00
antirez
7d3280143c CG: add XREADGROUP in the command table. 2018-03-15 12:54:10 +01:00
antirez
59eb392351 CG: XGROUPREAD group option parsing and groups lookup. 2018-03-15 12:54:10 +01:00
antirez
4e65528940 CG: fix raxFind() retval check in streamCreateCG(). 2018-03-15 12:54:10 +01:00
antirez
4925f7773c CG: data structures design + XGROUP CREATE implementation. 2018-03-15 12:54:10 +01:00
charsyam
484ed5a521 fix listpack.c to listpack.o in Makefile 2018-03-15 20:32:08 +09:00
Otmar Ertl
3c56cb9977 fixed compilation error when using clang as reported by michael-grunder 2018-03-14 21:00:06 +01:00
antirez
8bfc141157 Cluster: add test for the nofailover flag. 2018-03-14 16:30:32 +01:00
antirez
f467e1fce3 Cluster: ability to prevent slaves from failing over their masters.
This commit, in some parts derived from PR #3041 which is no longer
possible to merge (because the user deleted the original branch),
implements the ability of slaves to have a special configuration
preventing that they try to start a failover when the master is failing.

There are multiple reasons for wanting this, and the feautre was
requested in issue #3021 time ago.

The differences between this patch and the original PR are the
following:

1. The flag is saved/loaded on the nodes configuration.
2. The 'myself' node is now flag-aware, the flag is updated as needed
   when the configuration is changed via CONFIG SET.
3. The flag name uses NOFAILOVER instead of NO_FAILOVER to be consistent
   with existing NOADDR.
4. The redis.conf documentation was rewritten.

Thanks to @deep011 for the original patch.
2018-03-14 14:01:38 +01:00
Oran Agra
d66739931b Adding real allocator fragmentation to INFO and MEMORY command + active defrag test
other fixes / improvements:
- LUA script memory isn't taken from zmalloc (taken from libc malloc)
  so it can cause high fragmentation ratio to be displayed (which is false)
- there was a problem with "fragmentation" info being calculated from
  RSS and used_memory sampled at different times (now sampling them together)

other details:
- adding a few more allocator info fields to INFO and MEMORY commands
- improve defrag test to measure defrag latency of big keys
- increasing the accuracy of the defrag test (by looking at real grag info)
  this way we can use an even lower threshold and still avoid false positives
- keep the old (total) "fragmentation" field unchanged, but add new ones for spcific things
- add these the MEMORY DOCTOR command
- deduct LUA memory from the rss in case of non jemalloc allocator (one for which we don't "allocator active/used")
- reduce sampling rate of the rss and allocator info
2018-03-12 15:08:52 +02:00
Oran Agra
eb83a56f8e active defrag v2
- big keys are not defragged in one go from within the dict scan
  instead they are scanned in parts after the main dict hash bucket is done.
- add latency monitor sample for defrag
- change default active-defrag-cycle-min to induce lower latency
- make active defrag start a new scan right away if needed, so it's easier
  (for the test suite) to detect when it's done
- make active defrag quick the current cycle after each db / big key
- defrag  some non key long term global allocations
- some refactoring for smaller functions and more reusable code
- during dict rehashing, one scan iteration of the dict, can end up scanning
  one bucket in the smaller dict and many many buckets in the larger dict.
  so waiting for 16 scan iterations before checking the time, may be much too long.
2018-03-12 15:07:43 +02:00
Otmar Ertl
86ad4e06b8 use all 64 bits of the hash value instead of 63 2018-03-11 09:18:00 +01:00
Otmar Ertl
09f818bc20 made constant static 2018-03-10 20:44:20 +01:00
Otmar Ertl
bacac52eec improved definition of HLL_Q 2018-03-10 20:22:42 +01:00
Otmar Ertl
47b0cfcbd2 improved HyperLogLog cardinality estimation
based on method described in https://arxiv.org/abs/1702.01284
that does not rely on any magic constants
2018-03-10 20:13:21 +01:00
Otmar Ertl
3eaf0e07d2 replaced tab by spaces 2018-03-10 20:09:41 +01:00
artix
928640dee0 clusterManagerAddSlots: changed the way ADDSLOTS command is built 2018-03-06 13:06:04 +02:00