summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* reformat codeDeliang Yang2020-05-081-1/+1
|
* add daily github actions with libc malloc and valgrindOran Agra2020-05-085-18/+106
| | | | | | | | | | | | | | | * fix memlry leaks with diskless replica short read. * fix a few timing issues with valgrind runs * fix issue with valgrind and watchdog schedule signal about the valgrind WD issue: the stack trace test in logging.tcl, has issues with valgrind: ==28808== Can't extend stack to 0x1ffeffdb38 during signal delivery for thread 1: ==28808== too small or bad protection modes it seems to be some valgrind bug with SA_ONSTACK. SA_ONSTACK seems unneeded since WD is not recursive (SA_NODEFER was removed), also, not sure if it's even valid without a call to sigaltstack()
* Redis 6.0.1.6.0.1antirez2020-05-022-1/+29
|
* Cast printf() argument to the format specifier.antirez2020-05-021-1/+3
| | | | | | We could use uint64_t specific macros, but after all it's simpler to just use an obvious equivalent type plus casting: this will be a no op and is simpler than fixed size types printf macros.
* Revert "optimize memory usage of deferred replies"antirez2020-05-021-31/+0
| | | | This reverts commit fb732f7a944a4d4c90bb7375cb6030e88211f5aa.
* Save a call to stopThreadedIOIfNeeded() for the base case.antirez2020-05-021-3/+3
| | | | | Probably no performance changes, but the code should be trivial to read as in "No threading? Use the normal function and return".
* Redis 6.0.0 GA.6.0.0antirez2020-04-302-1/+264
|
* Update help.h again before Redis 6 GA.antirez2020-04-301-12/+17
|
* redis-cli: fix hints with subcommands.antirez2020-04-301-1/+2
|
* redis-cli command help updated.antirez2020-04-301-25/+165
|
* lazyfree & eviction: record latency generated by lazyfree evictionzhaozhao.zz2020-04-301-13/+18
| | | | | | | | 1. add eviction-lazyfree monitor 2. put eviction-del & eviction-lazyfree into eviction-cycle that means eviction-cycle contains all the latency in the eviction cycle including del and lazyfree 3. use getMaxmemoryState to check if we can break in lazyfree-evict
* MIGRATE AUTH2 for ACL support.antirez2020-04-301-5/+19
|
* CLIENT KILL USER <username>.antirez2020-04-301-0/+11
|
* Fix tracking table max keys option in redis.conf.antirez2020-04-301-9/+12
|
* redis-cli: safer cluster fix with unreachalbe masters.antirez2020-04-301-1/+26
|
* redis-cli: simplify cluster nodes coverage display.antirez2020-04-301-17/+10
|
* redis-cli: try to make clusterManagerFixOpenSlot() more readable.antirez2020-04-301-6/+25
| | | | | Also improve the message to make clear that there is no *clear* owner, not that there is no owner at all.
* XINFO STREAM FULL should have a default COUNT of 10Guy Benoish2020-04-301-4/+8
|
* Comment clearly why we moved some code in #6623.antirez2020-04-301-1/+4
|
* fix pipelined WAIT performance issue.srzhao2020-04-301-13/+13
| | | | | | | | | | | | If client gets blocked again in `processUnblockedClients`, redis will not send `REPLCONF GETACK *` to slaves untill next eventloop, so the client will be blocked for 100ms by default(10hz) if no other file event fired. move server.get_ack_from_slaves sinppet after `processUnblockedClients`, so that both the first WAIT command that puts client in blocked context and the following WAIT command processed in processUnblockedClients would trigger redis-sever to send `REPLCONF GETACK *`, so that the eventloop would get `REPLCONG ACK <reploffset>` from slaves and unblocked ASAP.
* Fix create-cluster BIN_PATH.antirez2020-04-301-1/+1
|
* Extend XINFO STREAM outputGuy Benoish2020-04-302-34/+226
| | | | Introducing XINFO STREAM <key> FULL
* Fix not used marco in cluster.chwware2020-04-301-1/+1
|
* Update create-clusterItamar Haber2020-04-301-1/+1
|
* Adds `BIN_PATH` to create-clusterItamar Haber2020-04-301-6/+8
| | | | | | | Allows for setting the binaries path if used outside the upstream repo. Also documents `call` in usage clause (TODO: port to `redis-cli --cluster call` or just deprecate it).
* hickup, re-fix dictEncObjKeyCompareOran Agra2020-04-281-4/+4
| | | | | | | | come to think of it, in theory (not in practice), getDecodedObject can return the same original object with refcount incremented, so the pointer comparision in the previous commit was invalid. so now instead of checking the encoding, we explicitly check the refcount.
* fix loading race in psync2 testsOran Agra2020-04-283-1/+15
|
* Rework comment in dictEncObjKeyCompare().antirez2020-04-281-9/+8
|
* allow dictFind using static robjOran Agra2020-04-281-4/+9
| | | | | | | since the recent addition of OBJ_STATIC_REFCOUNT and the assertion in incrRefCount it is now impossible to use dictFind using a static robj, because dictEncObjKeyCompare will call getDecodedObject which tries to increment the refcount just in order to decrement it later.
* Added crcspeed libraryMadelyn Olson2020-04-282-0/+341
|
* Made crc64 test consistentMadelyn Olson2020-04-281-2/+3
|
* Implemented CRC64 based on slice by 4Madelyn Olson2020-04-285-157/+124
|
* optimize memory usage of deferred repliesOran Agra2020-04-271-0/+31
| | | | | | | | | | | | When deffered reply is added the previous reply node cannot be used so all the extra space we allocated in it is wasted. in case someone uses deffered replies in a loop, each time adding a small reply, each of these reply nodes (the small string reply) would have consumed a 16k block. now when we add anther diferred reply node, we trim the unused portion of the previous reply block. see #7123
* Keep track of meaningful replication offset in replicas tooOran Agra2020-04-275-92/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now both master and replicas keep track of the last replication offset that contains meaningful data (ignoring the tailing pings), and both trim that tail from the replication backlog, and the offset with which they try to use for psync. the implication is that if someone missed some pings, or even have excessive pings that the promoted replica has, it'll still be able to psync (avoid full sync). the downside (which was already committed) is that replicas running old code may fail to psync, since the promoted replica trims pings form it's backlog. This commit adds a test that reproduces several cases of promotions and demotions with stale and non-stale pings Background: The mearningful offset on the master was added recently to solve a problem were the master is left all alone, injecting PINGs into it's backlog when no one is listening and then gets demoted and tries to replicate from a replica that didn't have any of the PINGs (or at least not the last ones). however, consider this case: master A has two replicas (B and C) replicating directly from it. there's no traffic at all, and also no network issues, just many pings in the tail of the backlog. now B gets promoted, A becomes a replica of B, and C remains a replica of A. when A gets demoted, it trims the pings from its backlog, and successfully replicate from B. however, C is still aware of these PINGs, when it'll disconnect and re-connect to A, it'll ask for something that's not in the backlog anymore (since A trimmed the tail of it's backlog), and be forced to do a full sync (something it didn't have to do before the meaningful offset fix). Besides that, the psync2 test was always failing randomly here and there, it turns out the reason were PINGs. Investigating it shows the following scenario: cycle 1: redis #1 is master, and all the rest are direct replicas of #1 cycle 2: redis #2 is promoted to master, #1 is a replica of #2 and #3 is replica of #1 now we see that when #1 is demoted it prints: 17339:S 21 Apr 2020 11:16:38.523 * Using the meaningful offset 3929963 instead of 3929977 to exclude the final PINGs (14 bytes difference) 17339:S 21 Apr 2020 11:16:39.391 * Trying a partial resynchronization (request e2b3f8817735fdfe5fa4626766daa938b61419e5:3929964). 17339:S 21 Apr 2020 11:16:39.392 * Successful partial resynchronization with master. and when #3 connects to the demoted #2, #2 says: 17339:S 21 Apr 2020 11:16:40.084 * Partial resynchronization not accepted: Requested offset for secondary ID was 3929978, but I can reply up to 3929964 so the issue here is that the meaningful offset feature saved the day for the demoted master (since it needs to sync from a replica that didn't get the last ping), but it didn't help one of the other replicas which did get the last ping.
* Fix STRALGO command flags.antirez2020-04-271-1/+1
|
* fix for unintended crash during panic responseDave-in-lafayette2020-04-271-1/+1
| | | If redis crashes early, before lua is set up (like, if File Descriptor 0 is closed before exec), it will crash again trying to print memory statistics.
* Add the stream tag to XSETID testsGuy Benoish2020-04-271-1/+1
|
* fix for crash during panic before all threads are upDave-in-lafayette2020-04-271-1/+1
| | | If there's a panic before all threads have been started (say, if file descriptor 0 is closed at exec), the panic response will crash here again.
* LCS -> STRALGO LCS.antirez2020-04-244-15/+28
| | | | | | | | | | | | | STRALGO should be a container for mostly read-only string algorithms in Redis. The algorithms should have two main characteristics: 1. They should be non trivial to compute, and often not part of programming language standard libraries. 2. They should be fast enough that it is a good idea to have optimized C implementations. Next thing I would love to see? A small strings compression algorithm.
* Also use propagate() in streamPropagateGroupID().antirez2020-04-241-1/+11
|
* add tcl test for cluster slotsyanhui132020-04-241-0/+44
|
* optimize the output of cluster slotsyanhui132020-04-241-4/+7
|
* Minor aesthetic changes to #7135.antirez2020-04-241-7/+5
|
* XREADGROUP with NOACK should propagate only one XGROUP SETID commandValentino Geron2020-04-241-7/+13
|
* ACL: re-enable command execution of disabled users.antirez2020-04-241-4/+0
| | | | | | | After all I changed idea again: enabled/disabled should have a more clear meaning, and it only means: you can't authenticate with such user with new connections, however old connections continue to work as expected.
* getRandomBytes(): use HMAC-SHA256.antirez2020-04-241-10/+30
| | | | | | | | | | Now that we have an interface to use this API directly, via ACL GENPASS, we are no longer sure what people could do with it. So why don't make it a strong primitive exported by Redis in order to create unique IDs and so forth? The implementation was tested against the test vectors that can be found in RFC4231.
* ACL GENPASS: take number of bits as argument.antirez2020-04-241-6/+21
|
* ACL GENPASS: emit 256 bits instead of 128.antirez2020-04-241-1/+1
|
* ACL: deny commands execution of disabled users.antirez2020-04-241-0/+4
|
* TLS: Fix build with SSL_OP_NO_CLIENT_RENEGOTIATIONTheo Buehler2020-04-241-1/+1
| | | | | There is no ssl in this scope, so the build breaks. All the other options are set directly on the ctx.