693 lines
33 KiB
Plaintext
693 lines
33 KiB
Plaintext
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/<number>
|
|
|
|
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/<number>
|
|
|
|
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/<number>
|
|
|
|
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/<number>
|
|
|
|
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/<number>
|
|
|
|
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
|