Redis 3.2.1.

This commit is contained in:
antirez 2016-06-17 15:15:21 +02:00
parent 8207e82804
commit 04c7261f03
2 changed files with 522 additions and 1 deletions

View File

@ -10,6 +10,527 @@ 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. CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
================================================================================
Redis 3.2.1 Released Fri Jun 17 15:01:56 CEST 2016
================================================================================
Upgrade urgency HIGH: Critical fix to Redis Sentinel, due to 3.2.0 regression
compared to 3.0.
Hey, this is Redis 3.2.1, and this release should bring some grain of
maturity to Redis 3.2. The list of commits following this note will tell
you the details, but the main things addressed in this release are the
following:
1. A critical bug in Sentinel was hopefully fixed. During the big 3.2
refactoring of Redis Sentinel, in order to implement connection sharing
to make Sentinel able to scale better (few Sentinels to monitor many
masters), a bug was introduced that mis-counted the number of pending
commands in the Redis link. This in turn resulted into an inability to talk
with certain Redis instances. A common result of this bug was the inability
of Redis Sentinel to reconfigure back the old master, after a failover,
when it is reachable again, as the slave of the new master. This was due
to the inability to talk with the old master at all.
2. BITFIELD bugs fixed.
3. GEO commands fixes on syntax errors and edge cases.
4. RESTORE now accepts dumps generated by older Redis versions.
5. Jemalloc now is really configured to save you memory, for a problem a
change in the jemalloc configuration did not really survived when the
3.2.0 release was finalized.
6. TTL and TYPE command no longer alter the last access time of a key, for
LRU evictions purposes. A new TOUCH command was introduced *just* to
update the access time of a key.
7. A bug was fixed in redis-cli, that connected to the instance running on the
port 6379 if there was one, regardless of what was specified.
8. TCP keep alive is now enabled by default. This should fix most ghost
connections problems without resulting in any practical change in otherwise
sane deployments.
9. A Sentinel crash that could happen during failovers was fixed.
And of course, more minor things that you can read in the detailed log
below. There are still reported bugs for 3.2 that were not fixed in this
release, but nothing critical AFAIK, and I wanted to release this one ASAP,
so likely a new release will not be too far.
Enjoy,
Salvatore
+-------------------------------------------------------------------------------
| config set list-max-ziplist-size didn't support negative values, unlike config file
| By oranagra, 2016-05-22 20:35:14 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/8207e828043e37a0d7e058530d2886bb3ff395ff
src/config.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
+-------------------------------------------------------------------------------
| Fix Sentinel pending commands counting.
| By antirez, 2016-06-16 19:24:34 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/6ad0371c9b4206a7a6692d50c9a301457baf9b6d
This bug most experienced effect was an inability of Redis to
reconfigure back old masters to slaves after they are reachable again
after a failover. This was due to failing to reset the count of the
pending commands properly, so the master appeared fovever down.
Was introduced in Redis 3.2 new Sentinel connection sharing feature
which is a lot more complex than the 3.0 code, but more scalable.
Many thanks to people reporting the issue, and especially to
@sskorgal for investigating the issue in depth.
Hopefully closes #3285.
src/sentinel.c | 1 +
1 file changed, 1 insertion(+)
+-------------------------------------------------------------------------------
| redis-cli: really connect to the right server.
| By antirez, 2016-06-16 17:23:31 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/58f1d446c35e8fe62df7c9ebe10f3c40a386c022
I recently introduced populating the autocomplete help array with the
COMMAND command if available. However this was performed before parsing
the arguments, defaulting to instance 6379. After the connection is
performed it remains stable.
The effect is that if there is an instance running on port 6339,
whatever port you specify is ignored and 6379 is connected to instead.
The right port will be selected only after a reconnection.
Close #3314.
src/redis-cli.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
+-------------------------------------------------------------------------------
| Remove debug printing
| By Jan-Erik Rediger, 2016-05-21 13:50:01 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/b6007b324b81dbd4ffe519b3bdb19ab65fbb407f
src/redis-cli.c | 3 ---
1 file changed, 3 deletions(-)
+-------------------------------------------------------------------------------
| RESTORE: accept RDB dumps with older versions.
| By antirez, 2016-06-16 15:53:57 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/f592b4d3178963878084a522b4fd050772c335ae
Reference issue #3218.
Checking the code I can't find a reason why the original RESTORE
code was so opinionated about restoring only the current version. The
code in to `rdb.c` appears to be capable as always to restore data from
older versions of Redis, and the only places where it is needed the
current version in order to correctly restore data, is while loading the
opcodes, not the values itself as it happens in the case of RESTORE.
For the above reasons, this commit enables RESTORE to accept older
versions of values payloads.
src/cluster.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| CLIENT error message was out of date
| By oranagra, 2016-05-23 11:42:21 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/047ced4473ee35485e22e45db8b8b4a272bf1177
src/networking.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| fix georadius returns multiple replies
| By oranagra, 2016-05-23 13:58:50 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/14e04847ac2960aefe31dccbec63d2503cf09ca5
src/geo.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
+-------------------------------------------------------------------------------
| Minor aesthetic fixes to PR #3264.
| By antirez, 2016-06-16 12:54:33 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/bd23ea3f9f3defbbdf512864ee1a88fd02665a7f
Comment format fixed + local var modified from camel case to underscore
separators as Redis code base normally does (camel case is mostly used
for global symbols like structure names, function names, global vars,
...).
src/bitops.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
+-------------------------------------------------------------------------------
| check WRONGTYPE in BITFIELD before looping on the operations.
| By oranagra, 2016-05-24 23:31:36 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/2a3ee58ec73b6abdeeb4890937b25191119bce35
optimization: lookup key only once, and grow at once to the max need
fixes #3259 and #3221, and also an early return if wrongtype is discovered by SET
src/bitops.c | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
+-------------------------------------------------------------------------------
| fix crash in BITFIELD GET on non existing key or wrong type see #3259
| By oranagra, 2016-05-24 14:52:43 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/a2e27b810edfad18b3ecc9c176a4606f94a2f0e4
this was a bug in the recent refactoring: bee963c4459223d874e3294a0d8638a588d33c8e
src/bitops.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
+-------------------------------------------------------------------------------
| fix check when can't send the command to the promoted slave
| By MOON_CLJ, 2016-05-26 13:10:12 +0800
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/26555f5e008b099b888ef39cabec632f4b31a038
src/sentinel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Test TOUCH and new TTL / TYPE behavior about object access time.
| By antirez, 2016-06-15 17:15:18 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/f1c237cb6a647ad5400b0ebce124fd9802ea7f89
tests/test_helper.tcl | 1 +
tests/unit/introspection-2.tcl | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+)
+-------------------------------------------------------------------------------
| GETRANGE: return empty string with negative, inverted start/end.
| By antirez, 2016-06-15 12:48:58 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/d4831e328759bf5bd07c2c6e6ce1d60e84ba196f
src/bitops.c | 4 ++--
src/t_string.c | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
+-------------------------------------------------------------------------------
| Remove additional round brackets from fix for #3282.
| By antirez, 2016-06-15 12:16:39 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/9942070f5a41fa3bc953e9628a7248aeb7c0befa
src/bitops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| bitcount bug:return non-zero value when start > end (both negative)
| By wenduo, 2016-05-30 16:21:08 +0800
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/f45fa5d05f47a5729786a69962119c9b3dc12645
src/bitops.c | 4 ++++
1 file changed, 4 insertions(+)
+-------------------------------------------------------------------------------
| Regression test for #3282.
| By antirez, 2016-06-15 11:49:49 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/0cb86064e602a093a23b56943a7321fe1af64984
tests/unit/bitops.tcl | 10 ++++++++++
1 file changed, 10 insertions(+)
+-------------------------------------------------------------------------------
| TTL and TYPE LRU access fixed. TOUCH implemented.
| By antirez, 2016-06-14 15:33:59 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/b23aa6706ac79a1c86c64aef07bd35e38f10f842
src/db.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
src/server.c | 1 +
src/server.h | 6 +++++-
3 files changed, 60 insertions(+), 8 deletions(-)
+-------------------------------------------------------------------------------
| redis-cli help.h updated.
| By antirez, 2016-06-14 14:45:48 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/6e4204fec9c78f3300d887ebc3db014df2c8b33e
src/help.h | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
+-------------------------------------------------------------------------------
| Fix GEORADIUS wrong output with radius > Earth radius.
| By antirez, 2016-05-30 12:45:49 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/bb43f4cab2f756c0412ca2b94d9e29c3db5025ab
Close #3266
deps/geohash-int/geohash_helper.c | 2 ++
1 file changed, 2 insertions(+)
+-------------------------------------------------------------------------------
| Geo: fix typo in geohashEstimateStepsByRadius().
| By antirez, 2016-05-30 15:31:19 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/16102bc0af0912a0c9a92aedddf796eb24a80b9e
I'm the author of this line but I can't see a good reason for it to
don't be a typo, a step of 26 should be valid with 52 bits per
coordinate, moreover the line was:
if (step > 26) step = 25;
So a step of 26 was actually already used, except when one of 27 was
computed (which is invalid) only then it was trimmed to 25 instead of
26.
All tests passing after the change.
deps/geohash-int/geohash_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Avoid undefined behavior in BITFIELD implementation.
| By antirez, 2016-05-31 11:52:07 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/014bf8044285c6d401d83e6e24829d276ab837f9
Probably there is no compiler that will actaully break the code or raise
a signal for unsigned -> signed overflowing conversion, still it was
apparently possible to write it in a more correct way.
All tests passing.
src/bitops.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
+-------------------------------------------------------------------------------
| Now that SPOP can be called by scripts use BLPOP on 's' flag test.
| By antirez, 2016-05-31 16:43:21 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/b4e5e2ec1ad7e9d1f4e7e559b61e0ecd4e50f2da
tests/unit/scripting.tcl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Test: run GEO tests by default.
| By antirez, 2016-05-31 16:43:49 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/df419281a19e13429b27814a3e384f6f029c3519
Thanks to @oranagra for noticing it was missing.
tests/test_helper.tcl | 1 +
1 file changed, 1 insertion(+)
+-------------------------------------------------------------------------------
| Enable tcp-keepalive by default.
| By antirez, 2016-06-13 12:03:14 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/40cfe13141c7178d22fd43e4ffbecc37686e0b43
redis.conf | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
+-------------------------------------------------------------------------------
| fix some compiler warnings
| By Pierre Chapuis, 2016-06-05 15:34:43 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/a650aaaf4f074ec428b450ef88799db1dcd34b0f
src/bitops.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
+-------------------------------------------------------------------------------
| Fixed typo in Sentinel compareSlavesForPromotion() comment.
| By antirez, 2016-06-10 09:15:01 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/3fd4baf1e77f125a306d57b788b72de5026c0564
src/sentinel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| fix comment "b>a" to "a > b"
| By andyli, 2016-06-07 14:42:50 +0800
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/8d029a5950f4ef40723c02b5c486b171aff0189c
src/sentinel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| fix pidfile in redis.conf
| By bogdanvlviv, 2016-04-19 14:43:06 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/6937f5960d1803ca0eda1ab6f4bc60023f50c914
redis.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Include 'fd_set' type name
| By jspraul, 2016-06-07 16:46:00 -0400
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/b5758cc5ce6c51ff75c86f9216214fe4d5e4c257
Fix an MSYS2-build-breaking error: unknown type name fd_set
src/ae_select.c | 1 +
1 file changed, 1 insertion(+)
+-------------------------------------------------------------------------------
| Allow SPOP from Lua scripts
| By Itamar Haber, 2016-05-28 20:01:46 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/620783e3b582e9ba6e1d8fbd47987281ce0b6317
The existing `R` flag appears to be sufficient and there's no apparent reason why the command should be blocked.
src/server.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| minor fixes - mainly signalModifiedKey, and GEORADIUS
| By oranagra, 2016-05-09 09:12:38 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/603234076f4e59967f331bc97de3c0db9947c8ef
src/geo.c | 1 +
src/sds.c | 8 ++++----
src/server.c | 2 +-
src/server.h | 3 +--
src/t_set.c | 9 ++++++---
src/t_zset.c | 12 ++++++------
6 files changed, 19 insertions(+), 16 deletions(-)
+-------------------------------------------------------------------------------
| Code to access object string bytes repeated 3x refactored into 1 function.
| By antirez, 2016-05-18 15:35:17 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/2e6b99499abb5ff1fbeee3bac4d064e5ff4ea256
src/bitops.c | 74 ++++++++++++++++++++++++++++++++----------------------------
1 file changed, 39 insertions(+), 35 deletions(-)
+-------------------------------------------------------------------------------
| fix crash in BITFIELD GET when key is integer encoded
| By oranagra, 2016-05-10 11:19:45 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/dcaeafc8280eb8329e7ce68e7ab02c67d98f0cf4
src/bitops.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
+-------------------------------------------------------------------------------
| Clarify that the LOG_STR_SIZE includes null term.
| By antirez, 2016-05-18 15:23:18 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/4ad088818a3353ebd619e8d43847b5d58108af20
src/server.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Test for BITFIELD regression #3221.
| By antirez, 2016-05-18 14:53:30 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/f991cdc3e19c187035855355808575efd6b4c149
tests/unit/bitfield.tcl | 5 +++++
1 file changed, 5 insertions(+)
+-------------------------------------------------------------------------------
| reduce struct padding by reordering members
| By oranagra, 2016-05-16 20:12:11 +0300
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/cb3e89e2cb0753d2d111eaeadc9c73cbe24025ab
src/quicklist.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| Actually use --with-lg-quantum=3 to build jemalloc.
| By antirez, 2016-05-18 11:58:36 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/a7f0fb448c110e125eece44dc955d6939e494daa
This change is documented in deps/README.md but was lost in one way or
the other, neutralizing the benefits of 24 bytes size classes (and
others).
Close #3208.
deps/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+-------------------------------------------------------------------------------
| redis-cli: integrate help.h with COMMAND output.
| By antirez, 2016-05-07 13:03:25 +0200
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/029dc0d97fd492a2fd579796d4c1cc04053c7190
Use the COMMAND output to fill with partial information the built-in
help. This makes redis-cli able to at least complete commands that are
exported by the Redis server it is connected to, but were not available
in the help.h file when the redis-cli binary was compiled.
src/redis-cli.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 70 insertions(+), 10 deletions(-)
+-------------------------------------------------------------------------------
| Removed dofile() from Lua
| By Adam Baldwin, 2012-10-25 20:27:10 -0700
+--------------------------------------------------------------------------------
https://github.com/antirez/redis/commit/95def3aee044468504bb07633084afd49b085db3
src/scripting.c | 2 ++
1 file changed, 2 insertions(+)
================================================================================ ================================================================================
Redis 3.2.0 Released Fri May 06 08:47:10 CEST 2016 Redis 3.2.0 Released Fri May 06 08:47:10 CEST 2016
================================================================================ ================================================================================

View File

@ -1 +1 @@
#define REDIS_VERSION "3.2.0" #define REDIS_VERSION "3.2.1"