diff --git a/00-RELEASENOTES b/00-RELEASENOTES deleted file mode 100644 index 62d1def15..000000000 --- a/00-RELEASENOTES +++ /dev/null @@ -1,692 +0,0 @@ -Redis 6.2 release notes -======================= - --------------------------------------------------------------------------------- -Upgrade urgency levels: - -LOW: No need to upgrade unless there are new features you want to use. -MODERATE: Program an upgrade of the server, but it's not urgent. -HIGH: There is a critical bug that may affect a subset of users. Upgrade! -CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP. -SECURITY: There are security fixes in the release. --------------------------------------------------------------------------------- - -================================================================================ -Redis 6.2.6 Released Mon Oct 4 12:00:00 IDT 2021 -================================================================================ - -Upgrade urgency: SECURITY, contains fixes to security issues. - -Security Fixes: -* (CVE-2021-41099) Integer to heap buffer overflow handling certain string - commands and network payloads, when proto-max-bulk-len is manually configured - to a non-default, very large value [reported by yiyuaner]. -* (CVE-2021-32762) Integer to heap buffer overflow issue in redis-cli and - redis-sentinel parsing large multi-bulk replies on some older and less common - platforms [reported by Microsoft Vulnerability Research]. -* (CVE-2021-32687) Integer to heap buffer overflow with intsets, when - set-max-intset-entries is manually configured to a non-default, very large - value [reported by Pawel Wieczorkiewicz, AWS]. -* (CVE-2021-32675) Denial Of Service when processing RESP request payloads with - a large number of elements on many connections. -* (CVE-2021-32672) Random heap reading issue with Lua Debugger [reported by - Meir Shpilraien]. -* (CVE-2021-32628) Integer to heap buffer overflow handling ziplist-encoded - data types, when configuring a large, non-default value for - hash-max-ziplist-entries, hash-max-ziplist-value, zset-max-ziplist-entries - or zset-max-ziplist-value [reported by sundb]. -* (CVE-2021-32627) Integer to heap buffer overflow issue with streams, when - configuring a non-default, large value for proto-max-bulk-len and - client-query-buffer-limit [reported by sundb]. -* (CVE-2021-32626) Specially crafted Lua scripts may result with Heap buffer - overflow [reported by Meir Shpilraien]. - -Bug fixes that involve behavior changes: -* GEO* STORE with empty source key deletes the destination key and return 0 (#9271) - Previously it would have returned an empty array like the non-STORE variant. -* PUBSUB NUMPAT replies with number of patterns rather than number of subscriptions (#9209) - This actually changed in 6.2.0 but was overlooked and omitted from the release notes. - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* Fix CLIENT PAUSE, used an old timeout from previous PAUSE (#9477) -* Fix CLIENT PAUSE in a replica would mess the replication offset (#9448) -* Add some missing error statistics in INFO errorstats (#9328) - -Other bug fixes: -* Fix incorrect reply of COMMAND command key positions for MIGRATE command (#9455) -* Fix appendfsync to always guarantee fsync before reply, on MacOS and FreeBSD (kqueue) (#9416) -* Fix the wrong mis-detection of sync_file_range system call, affecting performance (#9371) - -CLI tools: -* When redis-cli received ASK response, it didn't handle it (#8930) - -Improvements: -* Add latency monitor sample when key is deleted via lazy expire (#9317) -* Sanitize corrupt payload improvements (#9321, #9399) -* Delete empty keys when loading RDB file or handling a RESTORE command (#9297, #9349) - -================================================================================ -Redis 6.2.5 Released Wed Jul 21 16:32:19 IDT 2021 -================================================================================ - -Upgrade urgency: SECURITY, contains fixes to security issues that affect -authenticated client connections on 32-bit versions. MODERATE otherwise. - -Fix integer overflow in BITFIELD on 32-bit versions (CVE-2021-32761). -An integer overflow bug in Redis version 2.2 or newer can be exploited using the -BITFIELD command to corrupt the heap and potentially result with remote code -execution. - -Bug fixes that involve behavior changes: -* Change reply type for ZPOPMAX/MIN with count in RESP3 to nested array (#8981). - Was using a flat array like in RESP2 instead of a nested array like ZRANGE does. -* Fix reply type for HRANDFIELD and ZRANDMEMBER when key is missing (#9178). - Was using a null array instead of an empty array. -* Fix reply type for ZRANGESTORE when source key is missing (#9089). - Was using an empty array like ZRANGE instead of 0 (used in the STORE variant). - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* ZRANDMEMBER WITHSCORES with negative COUNT may return bad score (#9162) -* Fix crash after CLIENT UNPAUSE when threaded I/O config is enabled (#9041) -* Fix XTRIM or XADD with LIMIT may delete more entries than the limit (#9048) -* Fix build issue with OpenSSL 1.1.0 (#9233) - -Other bug fixes: -* Fail EXEC command in case a watched key is expired (#9194) -* Fix SMOVE not to invalidate dest key (WATCH and tracking) when member already exists (#9244) -* Fix SINTERSTORE not to delete dest key when getting a wrong type error (#9032) -* Fix overflows on 32-bit versions in GETBIT, SETBIT, BITCOUNT, BITPOS, and BITFIELD (#9191) -* Improve MEMORY USAGE on stream keys (#9164) -* Set TCP keepalive on inbound cluster bus connections (#9230) -* Fix diskless replica loading to recover from RDB short read on module AUX data (#9199) -* Fix race in client side tracking (#9116) -* Fix ziplist length updates on big-endian platforms (#2080) - -CLI tools: -* redis-cli cluster import command may issue wrong MIGRATE command, sending COPY instead of REPLACE (#8945) -* redis-cli --rdb fixes when using "-" to write to stdout (#9136, #9135) -* redis-cli support for RESP3 set type in CSV and RAW output (#7338) - -Modules: -* Module API for getting current command name (#8792) -* Fix RM_StringTruncate when newlen is 0 (#3718) -* Fix CLIENT UNBLOCK crashing modules without timeout callback (#9167) - -================================================================================ -Redis 6.2.4 Released Tue June 1 12:00:00 IST 2021 -================================================================================ - -Upgrade urgency: SECURITY, Contains fixes to security issues that affect -authenticated client connections. MODERATE otherwise. - -Fix integer overflow in STRALGO LCS (CVE-2021-32625) -An integer overflow bug in Redis version 6.0 or newer can be exploited using the -STRALGO LCS command to corrupt the heap and potentially result with remote code -execution. This is a result of an incomplete fix by CVE-2021-29477. - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* Fix crash after a diskless replication fork child is terminated (#8991) -* Fix redis-benchmark crash on unsupported configs (#8916) - -Other bug fixes: -* Fix crash in UNLINK on a stream key with deleted consumer groups (#8932) -* SINTERSTORE: Add missing keyspace del event when none of the sources exist (#8949) -* Sentinel: Fix CONFIG SET of empty string sentinel-user/sentinel-pass configs (#8958) -* Enforce client output buffer soft limit when no traffic (#8833) - -Improvements: -* Hide AUTH passwords in MIGRATE command from slowlog (#8859) - -================================================================================ -Redis 6.2.3 Released Mon May 3 19:00:00 IST 2021 -================================================================================ - -Upgrade urgency: SECURITY, Contains fixes to security issues that affect -authenticated client connections. LOW otherwise. - -Integer overflow in STRALGO LCS command (CVE-2021-29477): -An integer overflow bug in Redis version 6.0 or newer could be exploited using -the STRALGO LCS command to corrupt the heap and potentially result in remote -code execution. The integer overflow bug exists in all versions of Redis -starting with 6.0. - -Integer overflow in COPY command for large intsets (CVE-2021-29478): -An integer overflow bug in Redis 6.2 could be exploited to corrupt the heap and -potentially result with remote code execution. The vulnerability involves -changing the default set-max-intset-entries configuration value, creating a -large set key that consists of integer values and using the COPY command to -duplicate it. The integer overflow bug exists in all versions of Redis starting -with 2.6, where it could result with a corrupted RDB or DUMP payload, but not -exploited through COPY (which did not exist before 6.2). - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* Fix memory leak in moduleDefragGlobals (#8853) -* Fix memory leak when doing lazy freeing client tracking table (#8822) -* Block abusive replicas from sending command that could assert and crash redis (#8868) - -Other bug fixes: -* Use a monotonic clock to check for Lua script timeout (#8812) -* redis-cli: Do not use unix socket when we got redirected in cluster mode (#8870) - -Modules: -* Fix RM_GetClusterNodeInfo() to correctly populate master id (#8846) - -================================================================================ -Redis 6.2.2 Released Mon April 19 19:00:00 IST 2021 -================================================================================ - -Upgrade urgency: HIGH, if you're using ACL and pub/sub, CONFIG REWRITE, or -suffering from performance regression. see below. - -Bug fixes for regressions in previous releases of Redis 6.2: -* Fix BGSAVE, AOFRW, and replication slowdown due to child reporting CoW (#8645) -* Fix short busy loop when timer event is about to fire (#8764) -* Fix default user, overwritten and reset users losing pubsub channel permissions (#8723) -* Fix config rewrite with an empty `save` config resulsing in default `save` values (#8719) -* Fix not starting on alpine/libmusl without IPv6 (#8655) -* Fix issues with propagation and MULTI/EXEC in modules (#8617) - Several issues around nested calls and thread safe contexts - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* ACL Pub/Sub channels permission handling for save/load scenario (#8794) -* Fix early rejection of PUBLISH inside MULTI-EXEC transaction (#8534) -* Fix missing SLOWLOG records for blocked commands (#8632) -* Allow RESET command during busy scripts (#8629) -* Fix some error replies were not counted on stats (#8659) - -Bug fixes: -* Add a timeout mechanism for replicas stuck in fullsync (#8762) -* Process HELLO command even if the default user has no permissions (#8633) -* Client issuing a long running script and using a pipeline, got disconnected (#8715) -* Fix script kill to work also on scripts that use `pcall` (#8661) -* Fix list-compress-depth may compress more node than required (#8311) -* Fix redis-cli handling of rediss:// URL scheme (#8705) -* Cluster: Skip unnecessary check which may prevent failure detection (#8585) -* Cluster: Fix hang manual failover when replica just started (#8651) -* Sentinel: Fix info-refresh time field before sentinel get first response (#8567) -* Sentinel: Fix possible crash on failed connection attempt (#8627) -* Systemd: Send the readiness notification when a replica is ready to accept connections (#8409) - -Command behavior changes: -* ZADD: fix wrong reply when INCR used with GT/LT which blocked the update (#8717) - It was responding with the incremented value rather than nil -* XAUTOCLAIM: fix response to return the next available id as the cursor (#8725) - Previous behavior was retuning the last one which was already scanned -* XAUTOCLAIM: fix JUSTID to prevent incrementing delivery_count (#8724) - -New config options: -* Add cluster-allow-replica-migration config option (#5285) -* Add replica-announced config option (#8653) -* Add support for plaintext clients in TLS cluster (#8587) -* Add support for reading encrypted keyfiles (#8644) - -Improvements: -* Fix performance regression in BRPOP on Redis 6.0 (#8689) -* Avoid adding slowlog entries for config with sensitive data (#8584) -* Improve redis-cli non-binary safe string handling (#8566) -* Optimize CLUSTER SLOTS reply (#8541) -* Handle remaining fsync errors (#8419) - -Info fields and introspection changes: -* Strip % sign from current_fork_perc info field (#8628) -* Fix RSS memory info on FreeBSD (#8620) -* Fix client_recent_max_input/output_buffer in 'INFO CLIENTS' when all clients drop (#8588) -* Fix invalid master_link_down_since_seconds in info replication (#8785) - -Platform and deployment-related changes: -* Fix FreeBSD <12.x builds (#8603) - -Modules: -* Add macros for RedisModule_log logging levels (#4246) -* Add RedisModule_GetAbsExpire / RedisModule_SetAbsExpire (#8564) -* Add a module type for key space notification (#8759) -* Set module eviction context flag only in masters (#8631) -* Fix unusable RedisModule_IsAOFClient API (#8596) -* Fix missing EXEC on modules propagation after failed EVAL execution (#8654) -* Fix edge-case when a module client is unblocked (#8618) - -================================================================================ -Redis 6.2.1 Released Mon Mar 1 17:51:36 IST 2021 -================================================================================ - -Upgrade urgency: LOW. - -Here is a comprehensive list of changes in this release compared to 6.2.0, -each one includes the PR number that added it, so you can get more details -at https://github.com/redis/redis/pull/ - -Bug fixes: -* Fix sanitize-dump-payload for stream with deleted records (#8568) -* Prevent client-query-buffer-limit config from being set to lower than 1mb (#8557) - -Improvements: -* Make port, tls-port and bind config options modifiable at runtime (#8510) - -Platform and deployment-related changes: -* Fix compilation error on non-glibc systems if jemalloc is not used (#8533) -* Improved memory consumption and memory usage tracking on FreeBSD (#8545) -* Fix compilation on ARM64 MacOS with jemalloc (#8458) - -Modules: -* New Module API for getting user name of a client (#8508) -* Optimize RM_Call by utilizing a shared reusable client (#8516) -* Fix crash running CLIENT INFO via RM_Call (#8560) - -================================================================================ -Redis 6.2.0 GA Released Tue Feb 22 14:00:00 IST 2021 -================================================================================ - -Upgrade urgency: SECURITY if you use 32bit build of redis (see bellow), MODERATE -if you used earlier versions of Redis 6.2, LOW otherwise. - -Integer overflow on 32-bit systems (CVE-2021-21309): -Redis 4.0 or newer uses a configurable limit for the maximum supported bulk -input size. By default, it is 512MB which is a safe value for all platforms. -If the limit is significantly increased, receiving a large request from a client -may trigger several integer overflow scenarios, which would result with buffer -overflow and heap corruption. - -Here is a comprehensive list of changes in this release compared to 6.2 RC3, -each one includes the PR number that added it, so you can get more details -at https://github.com/redis/redis/pull/ - -Bug fixes: -* Avoid 32-bit overflows when proto-max-bulk-len is set high (#8522) -* Fix broken protocol in client tracking tracking-redir-broken message (#8456) -* Avoid unsafe field name characters in INFO commandstats, errorstats, modules (#8492) -* XINFO able to access expired keys during CLIENT PAUSE WRITE (#8436) -* Fix allowed length for REPLCONF ip-address, needed due to Sentinel's support for hostnames (#8517) -* Fix broken protocol in redis-benchmark when used with -a or --dbnum (#8486) -* XADD counts deleted records too when considering switching to a new listpack (#8390) - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* Fixes in GEOSEARCH bybox (accuracy and mismatch between width and height) (#8445) -* Fix risk of OOM panic in HRANDFIELD, ZRANDMEMBER commands with huge negative count (#8429) -* Fix duplicate replicas issue in Sentinel, needed due to hostname support (#8481) -* Fix Sentinel configuration rewrite, an improvement of #8271 (#8480) - -Command behavior changes: -* SRANDMEMBER uses RESP3 array type instead of set type (#8504) -* EXPIRE, EXPIREAT, SETEX, GETEX: Return error when provided expire time overflows (#8287) - -Other behavior changes: -* Remove ACL subcommand validation if fully added command exists. (#8483) - -Improvements: -* Optimize sorting in GEORADIUS / GEOSEARCH with COUNT (#8326) -* Optimize HRANDFIELD and ZRANDMEMBER case 4 when ziplist encoded (#8444) -* Optimize in-place replacement of elements in HSET, HINCRBY, LSET (#8493) -* Remove redundant list to store pubsub patterns (#8472) -* Add --insecure option to command line tools (#8416) - -Info fields and introspection changes: -* Add INFO fields to track progress of BGSAVE, AOFRW, replication (#8414) - -Modules: -* RM_ZsetRem: Delete key if empty, the bug could leave empty zset keys (#8453) -* RM_HashSet: Add COUNT_ALL flag and set errno (#8446) - -================================================================================ -Redis 6.2 RC3 Released Tue Feb 1 14:00:00 IST 2021 -================================================================================ - -Upgrade urgency LOW: This is the third Release Candidate of Redis 6.2. - -Here is a comprehensive list of changes in this release compared to 6.2 RC2, -each one includes the PR number that added it, so you can get more details -at https://github.com/redis/redis/pull/ - -New commands / args: -* Add HRANDFIELD and ZRANDMEMBER commands (#8297) -* Add FAILOVER command (#8315) -* Add GETEX, GETDEL commands (#8327) -* Add PXAT/EXAT arguments to SET command (#8327) -* Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH (#8258) - -Sentinel: -* Add hostname support to Sentinel (#8282) -* Prevent file descriptors from leaking into Sentinel scripts (#8242) -* Fix config file line order dependency and config rewrite sequence (#8271) - -New configuration options: -* Add set-proc-title config option to disable changes to the process title (#3623) -* Add proc-title-template option to control what's shown in the process title (#8397) -* Add lazyfree-lazy-user-flush config option to control FLUSHALL, FLUSHDB and SCRIPT FLUSH (#8258) - -Bug fixes: -* AOF: recover from last write error by turning on/off appendonly config (#8030) -* Exit on fsync error when the AOF fsync policy is 'always' (#8347) -* Avoid assertions (on older kernels) when testing arm64 CoW bug (#8405) -* CONFIG REWRITE should honor umask settings (#8371) -* Fix firstkey,lastkey,step in COMMAND command for some commands (#8367) - -Special considerations: -* Fix misleading description of the save configuration directive (#8337) - -Improvements: -* A way to get RDB file via replication without excessive replication buffers (#8303) -* Optimize performance of clusterGenNodesDescription for large clusters (#8182) - -Info fields and introspection changes: -* SLOWLOG and LATENCY monitor include unblocking time of blocked commands (#7491) - -Modules: -* Add modules API for streams (#8288) -* Add event for fork child birth and termination (#8289) -* Add RM_BlockedClientMeasureTime* etc, to track background processing in commandstats (#7491) -* Fix bug in v6.2, wrong value passed to the new unlink callback (#8381) -* Fix bug in v6.2, modules blocked on keys unblock on commands like LPUSH (#8356) - -================================================================================ -Redis 6.2 RC2 Released Tue Jan 12 16:17:20 IST 2021 -================================================================================ - -Upgrade urgency LOW: This is the second Release Candidate of Redis 6.2. - -IMPORTANT: If you're running Redis on ARM64 or a big-endian system, upgrade may -have significant implications. Please be sure to read the notes below. - -Here is a comprehensive list of changes in this release compared to 6.2 RC1, -each one includes the PR number that added it, so you can get more details -at https://github.com/redis/redis/pull/ - -New commands / args: -* Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command (#7844) -* Add the XAUTOCLAIM command (#7973) -* Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM (#8169) -* Add the ANY argument to GEOSEARCH and GEORADIUS (#8259) -* Add the CH, NX, XX arguments to GEOADD (#8227) -* Add the COUNT argument to LPOP and RPOP (#8179) -* Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively (#8170) -* Change the proto-ver argument of HELLO to optional (#7377) -* Add the CLIENT TRACKINGINFO subcommand (#7309) - -Command behavior changes: -* CLIENT TRACKING yields an error when given overlapping BCAST prefixes (#8176) -* SWAPDB invalidates WATCHed keys (#8239) -* SORT command behaves differently when used on a writable replica (#8283) - -Other behavior changes: -* Avoid propagating MULTI/EXEC for read-only transactions (#8216) -* Remove the read-only flag from TIME, ECHO, ROLE, LASTSAVE (#8216) -* Fix the command flags of PFDEBUG (#8222) -* Tracking clients will no longer receive unnecessary key invalidation messages after FLUSHDB (#8039) -* Sentinel: Fix missing updates to the config file after SENTINEL SET command (#8229) - -Bug fixes with compatibility implications (bugs introduced in Redis 6.0): -* Fix RDB CRC64 checksum on big-endian systems (#8270) - If you're using big-endian please consider the compatibility implications with - RESTORE, replication and persistence. -* Fix wrong order of key/value in Lua's map response (#8266) - If your scripts use redis.setresp() or return a map (new in Redis 6.0), please - consider the implications. - -Bug fixes that are only applicable to previous releases of Redis 6.2: -* Resolve rare assertions in active defragmentation while loading (#8284, #8281) - -Bug fixes: -* Fix the selection of a random element from large hash tables (#8133) -* Fix an issue where a forked process deletes the parent's pidfile (#8231) -* Fix crashes when enabling io-threads-do-reads (#8230) -* Fix a crash in redis-cli after executing cluster backup (#8267) -* Fix redis-benchmark to use an IP address for the first cluster node (#8154) -* Fix saving of strings larger than 2GB into RDB files (#8306) - -Additional improvements: -* Improve replication handshake time (#8214) -* Release client tracking table memory asynchronously in cases where the DB is also freed asynchronously (#8039) -* Avoid wasteful transient memory allocation in certain cases (#8286, #5954) -* Handle binary string values by the 'requirepass' and 'masterauth' configs (#8200) - -Platform and deployment-related changes: -* Install redis-check-rdb and redis-check-aof as symlinks to redis-server (#5745) -* Add a check for an ARM64 Linux kernel bug (#8224) - Due to the potential severity of this issue, Redis will refuse to run on - affected platforms by default. - -Info fields and introspection changes: -* Add the errorstats section to the INFO command (#8217) -* Add the failed_calls and rejected_calls fields INFO's commandstats section (#8217) -* Report child copy-on-write metrics continuously (#8264) - -Module API changes: -* Add the RedisModule_SendChildCOWInfo API (#8264) -* Add the may-replicate command flag (#8170) - -================================================================================ -Redis 6.2 RC1 Released Mon Dec 14 11:50:00 IST 2020 -================================================================================ - -Upgrade urgency LOW: This is the first Release Candidate of Redis 6.2. - -Introduction to the Redis 6.2 release -===================================== - -This release is the first significant Redis release managed by the core team -under the new project governance model. - -Redis 6.2 includes many new commands and improvements, but no big features. It -mainly makes Redis more complete and addresses issues that have been requested -by many users frequently or for a long time. - -Many of these changes were not eligible for 6.0.x for several reasons: - -1. They are not backward compatible, which is always the case with new or - extended commands (that cannot be replicated to an older replica). -2. They require a longer release-candidate test cycle. - - -Here is a comprehensive list of changes in this release compared to 6.0.9, -each one includes the PR number that added it, so you can get more details -at https://github.com/redis/redis/pull/ - -New commands / args: -* Add SMISMEMBER command that checks multiple members (#7615) -* Add ZMSCORE command that returns an array of scores (#7593) -* Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929) -* Add RESET command that resets client connection state (#7982) -* Add COPY command that copies keys (#7953) -* Add ZDIFF and ZDIFFSTORE commands (#7961) -* Add ZINTER and ZUNION commands (#7794) -* Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094) -* Add GET parameter to SET command, for more powerful GETSET (#7852) -* Add exclusive range query to XPENDING (#8130) -* Add exclusive range query to X[REV]RANGE (#8072) -* Add GT and LT options to ZADD for conditional score updates (#7818) -* Add CLIENT INFO and CLIENT LIST for specific ids (#8113) -* Add IDLE argument to XPENDING command (#7972) -* Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913) -* Add NOMKSTREAM option to XADD command (#7910) -* Add command introspection to Sentinel (#7940) -* Add SENTINEL MYID subcommand (#7858) - -New features: -* Dump payload sanitization: prevent corrupt payload causing crashes (#7807) - Has flags to enable full O(N) validation (disabled by default). -* ACL patterns for Pub/Sub channels (#7993) -* Support ACL for Sentinel mode (#7888) -* Support getting configuration from both stdin and file at the same time (#7893) - Lets you avoid storing secrets on the disk. - -New features in CLI tools: -* redis-cli RESP3 push support (#7609) -* redis-cli cluster import support source and target that require auth (#7994) -* redis-cli URIs able to provide user name in addition to password (#8048) -* redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites (#8005) -* redis-cli add -e option to exit with code when command execution fails (#8136) - -Command behavior changes: -* EXISTS should not alter LRU (#8016) - In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key. -* OBJECT should not reveal logically expired keys (#8016) - Will now behave the same TYPE or any other non-DEBUG command. -* Improve db id range check for SELECT and MOVE (#8085) - Changes the error message text on a wrong db index. -* Modify AUTH / HELLO error message (#7648) - Changes the error message text when the user isn't found or is disabled. -* BITOPS length limited to proto_max_bulk_len rather than 512MB (#8096) - The limit is now configurable like in SETRANGE, and APPEND. -* GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit (#8107) - -Other behavior changes: -* Optionally (default) fail to start if requested bind address is not available (#7936) - If you rely on Redis starting successfully even if one of the bind addresses - is not available, you'll need to tune the new config. -* Limit the main db dictionaries expansion to prevent key eviction (#7954) - In the past big dictionary rehashing could result in massive data eviction. - Now this rehashing is delayed (up to a limit), which can result in performance - loss due to hash collisions. -* CONFIG REWRITE is atomic and safer, but requires write access to the config file's folder (#7824, #8051) - This change was already present in 6.0.9, but was missing from the release - notes. -* A new incremental eviction mechanism that reduces latency on eviction spikes (#7653) - In pathological cases this can cause memory to grow uncontrolled and may require - specific tuning. -* Not resetting "save" config when Redis is started with command line arguments. (#7092) - In case you provide command line arguments without "save" and count on it - being disabled, Now the defaults "save" config will kick in. -* Update memory metrics for INFO during loading (#7690) -* When "supervised" config is enabled, it takes precedence over "daemonize". (#8036) -* Assertion and panic, print crash log without generating SIGSEGV (#7585) -* Added crash log report on SIGABRT, instead of silently exiting (#8004) -* Disable THP (Transparent Huge Pages) if enabled (#7381) - If you deliberately enabled it, you'll need to config Redis to keep it. - -Bug fixes: -* Handle output buffer limits for module blocked clients (#8141) - Could result in a module sending reply to a blocked client to go beyond the - limit. -* Fix setproctitle related crashes. (#8150, #8088) - Caused various crashes on startup, mainly on Apple M1 chips or under - instrumentation. -* A module doing RM_Call could cause replicas to get nested MULTI (#8097). -* Backup/restore cluster mode keys to slots map for repl-diskless-load=swapdb (#8108) - In cluster mode with repl-diskless-load, when loading failed, slot map - wouldn't have been restored. -* Fix oom-score-adj-values range, and bug when used in config file (#8046) - Enabling setting this in the config file in a line after enabling it, would - have been buggy. -* Reset average ttl when empty databases (#8106) - Just causing misleading metric in INFO -* Disable rehash when Redis has child process (#8007) - This could have caused excessive CoW during BGSAVE, replication or AOFRW. -* Further improved ACL algorithm for picking categories (#7966) - Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER. -* Fix bug with module GIL being released prematurely (#8061) - Could in theory (and rarely) cause multi-threaded modules to corrupt memory. -* Fix cluster redirect for module command with no firstkey. (#7539) -* Reduce effect of client tracking causing feedback loop in key eviction (#8100) -* Kill disk-based fork child when all replicas drop and 'save' is not enabled (#7819) -* Rewritten commands (modified for propagation) are logged as their original command (#8006) -* Fix cluster access to unaligned memory (SIGBUS on old ARM) #7958 -* If diskless repl child is killed, make sure to reap the child pid (#7742) -* Broadcast a PONG message when slot's migration is over, may reduce MOVED responses (#7571) - -Other improvements: -* TLS Support in redis-benchmark (#7959) -* Accelerate diskless master connections, and general re-connections (#6271) -* Run active defrag while blocked / loading (#7726) -* Performance and memory reporting improvement - sds take control of its internal fragmentation (#7875) -* Speedup cluster failover. (#7948) - -Platform / toolchain support related improvements: -* Optionally (not by default) use H/W Monotonic clock for faster time sampling (#7644) -* Remove the requirements for C11 and _Atomic supporting compiler (#7707) - This would allow to more easily build and use Redis on older systems and - compilers again. -* Fix crash log registers output on ARM. (#8020) -* Raspberry build fix. (#8095) -* Setting process title support for Haiku. (#8060) -* DragonFlyBSD RSS memory sampling support. (#8023) - -New configuration options: -* Enable configuring OpenSSL using the standard openssl.cnf (#8143) -* oom-score-adj-values config can now take absolute values (besides relative ones) (#8046) -* TLS: Add different client cert support. (#8076) -* Note that a few other changes listed above added their config options. - -Info fields and introspection changes: -* Add INFO fields to track diskless and disk-based replication progress (#7981) -* Add INFO field for main thread cpu time, and scrape system time. (#8132) -* Add total_forks to INFO STATS (#8155) -* Add maxclients and cluster_connections to INFO CLIENTS (#7979) -* Add tracking bcast flag and client redirection in client list (#7995) -* Fixed INFO client_recent_max_input_buffer includes argv array (#8065, see #7874) -* Note that a few other changes listed above added their info fields. - -Module API changes: -* Add CTX_FLAGS_DENY_BLOCKING as a unified the way to know if blocking is allowed (#8025) -* Add data type callbacks for lazy free effort, and unlink (#7912) -* Add data type callback for COPY command (#8112) -* Add callbacks for defrag support. (#8149) -* Add module event for repl-diskless-load swapdb (#8153) - -Module related fixes: -* Moved RMAPI_FUNC_SUPPORTED so that it's usable (#8037) -* Improve timer accuracy (#7987) -* Allow '\0' inside of result of RM_CreateStringPrintf (#6260) - - -Thanks to all the users and developers who made this release possible. -We'll follow up with more RC releases, until the code looks production ready -and we don't get reports of serious issues for a while. - -A special thank you for the amount of work put into this release by: -- Oran Agra -- Yossi Gottlieb -- Viktor Söderqvist -- Yang Bodong -- Filipe Oliveira -- Guy Benoish -- Itamar Haber -- Madelyn Olson -- Wang Yuan -- Felipe Machado -- Wen Hui -- Tatsuya Arisawa -- Jonah H. Harris -- Raghav Muddur -- Jim Brunner -- Yaacov Hazan -- Allen Farris -- Chen Yang -- Nitai Caro -- sundb -- Meir Shpilraien -- maohuazhu -- Valentino Geron -- Zhao Zhao -- Qu Chen -- George Prekas -- Tyson Andre -- Uri Yagelnik -- Michael Grunder -- Huang Zw -- alexronke-channeladvisor -- Andy Pan -- Wu Yunlong -- Wei Kukey -- Yoav Steinberg -- Greg Femec -- Uri Shachar -- Nykolas Laurentino de Lima -- xhe -- zhenwei pi -- David CARLIER - -Migrating from 6.0 to 6.2 -========================= - -Redis 6.2 is mostly a strict superset of 6.0, you should not have any problem -upgrading your application from 6.0 to 6.2. However there are some small changes -of behavior listed above, please make sure you are not badly affected by any of -them. - -Specifically these sections: -* Command behavior changes -* Other behavior changes - --------------------------------------------------------------------------------- - -Cheers, -The Redis team