Commit graph

20 commits

Author SHA1 Message Date
adam
3f8ea4b7ee redis: updated to 6.2.6
Redis 6.2.6

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
  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
  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
* Fix CLIENT PAUSE in a replica would mess the replication offset
* Add some missing error statistics in INFO errorstats

Other bug fixes:
* Fix incorrect reply of COMMAND command key positions for MIGRATE command
* Fix appendfsync to always guarantee fsync before reply, on MacOS and FreeBSD (kqueue)
* Fix the wrong mis-detection of sync_file_range system call, affecting performance

CLI tools:
* When redis-cli received ASK response, it didn't handle it

Improvements:
* Add latency monitor sample when key is deleted via lazy expire
* Sanitize corrupt payload improvements
* Delete empty keys when loading RDB file or handling a RESTORE command
2021-10-04 18:55:36 +00:00
adam
676497ff5e redis: updated to 6.2.1
Redis 6.2.1

Upgrade urgency: LOW.

Bug fixes:
* Fix sanitize-dump-payload for stream with deleted records
* Prevent client-query-buffer-limit config from being set to lower than 1mb

Improvements:
* Make port, tls-port and bind config options modifiable at runtime

Platform and deployment-related changes:
* Fix compilation error on non-glibc systems if jemalloc is not used
* Improved memory consumption and memory usage tracking on FreeBSD
* Fix compilation on ARM64 MacOS with jemalloc

Modules:
* New Module API for getting user name of a client
* Optimize RM_Call by utilizing a shared reusable client
* Fix crash running CLIENT INFO via RM_Call
2021-03-02 11:56:53 +00:00
adam
5b445346da redis: updated to 6.2.0
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.

Bug fixes:
* Avoid 32-bit overflows when proto-max-bulk-len is set high
* Fix broken protocol in client tracking tracking-redir-broken message
* Avoid unsafe field name characters in INFO commandstats, errorstats, modules
* XINFO able to access expired keys during CLIENT PAUSE WRITE
* Fix allowed length for REPLCONF ip-address, needed due to Sentinel's support for hostnames
* Fix broken protocol in redis-benchmark when used with -a or --dbnum
* XADD counts deleted records too when considering switching to a new listpack

Bug fixes that are only applicable to previous releases of Redis 6.2:
* Fixes in GEOSEARCH bybox (accuracy and mismatch between width and height)
* Fix risk of OOM panic in HRANDFIELD, ZRANDMEMBER commands with huge negative count
* Fix duplicate replicas issue in Sentinel, needed due to hostname support
* Fix Sentinel configuration rewrite

Command behavior changes:
* SRANDMEMBER uses RESP3 array type instead of set type
* EXPIRE, EXPIREAT, SETEX, GETEX: Return error when provided expire time overflows

Other behavior changes:
* Remove ACL subcommand validation if fully added command exists.

Improvements:
* Optimize sorting in GEORADIUS / GEOSEARCH with COUNT
* Optimize HRANDFIELD and ZRANDMEMBER case 4 when ziplist encoded
* Optimize in-place replacement of elements in HSET, HINCRBY, LSET
* Remove redundant list to store pubsub patterns
* Add --insecure option to command line tools

Info fields and introspection changes:
* Add INFO fields to track progress of BGSAVE, AOFRW, replication

Modules:
* RM_ZsetRem: Delete key if empty, the bug could leave empty zset keys
* RM_HashSet: Add COUNT_ALL flag and set errno


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.

New commands / args:
* Add HRANDFIELD and ZRANDMEMBER commands
* Add FAILOVER command
* Add GETEX, GETDEL commands
* Add PXAT/EXAT arguments to SET command
* Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH

Sentinel:
* Add hostname support to Sentinel
* Prevent file descriptors from leaking into Sentinel scripts
* Fix config file line order dependency and config rewrite sequence

New configuration options:
* Add set-proc-title config option to disable changes to the process title
* Add proc-title-template option to control what's shown in the process title
* Add lazyfree-lazy-user-flush config option to control FLUSHALL, FLUSHDB and SCRIPT FLUSH

Bug fixes:
* AOF: recover from last write error by turning on/off appendonly config
* Exit on fsync error when the AOF fsync policy is 'always'
* Avoid assertions (on older kernels) when testing arm64 CoW bug
* CONFIG REWRITE should honor umask settings
* Fix firstkey,lastkey,step in COMMAND command for some commands

Special considerations:
* Fix misleading description of the save configuration directive

Improvements:
* A way to get RDB file via replication without excessive replication buffers
* Optimize performance of clusterGenNodesDescription for large clusters

Info fields and introspection changes:
* SLOWLOG and LATENCY monitor include unblocking time of blocked commands

Modules:
* Add modules API for streams
* Add event for fork child birth and termination
* Add RM_BlockedClientMeasureTime* etc, to track background processing in commandstats
* Fix bug in v6.2, wrong value passed to the new unlink callback
* Fix bug in v6.2, modules blocked on keys unblock on commands like LPUSH


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.

New commands / args:
* Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command
* Add the XAUTOCLAIM command
* Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM
* Add the ANY argument to GEOSEARCH and GEORADIUS
* Add the CH, NX, XX arguments to GEOADD
* Add the COUNT argument to LPOP and RPOP
* Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively
* Change the proto-ver argument of HELLO to optional
* Add the CLIENT TRACKINGINFO subcommand

Command behavior changes:
* CLIENT TRACKING yields an error when given overlapping BCAST prefixes
* SWAPDB invalidates WATCHed keys
* SORT command behaves differently when used on a writable replica

Other behavior changes:
* Avoid propagating MULTI/EXEC for read-only transactions
* Remove the read-only flag from TIME, ECHO, ROLE, LASTSAVE
* Fix the command flags of PFDEBUG
* Tracking clients will no longer receive unnecessary key invalidation messages after FLUSHDB
* Sentinel: Fix missing updates to the config file after SENTINEL SET command

Bug fixes with compatibility implications (bugs introduced in Redis 6.0):
* Fix RDB CRC64 checksum on big-endian systems
  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
  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

Bug fixes:
* Fix the selection of a random element from large hash tables
* Fix an issue where a forked process deletes the parent's pidfile
* Fix crashes when enabling io-threads-do-reads
* Fix a crash in redis-cli after executing cluster backup
* Fix redis-benchmark to use an IP address for the first cluster node
* Fix saving of strings larger than 2GB into RDB files

Additional improvements:
* Improve replication handshake time
* Release client tracking table memory asynchronously in cases where the DB is also freed asynchronously
* Avoid wasteful transient memory allocation in certain cases
* Handle binary string values by the 'requirepass' and 'masterauth' configs

Platform and deployment-related changes:
* Install redis-check-rdb and redis-check-aof as symlinks to redis-server
* Add a check for an ARM64 Linux kernel bug
  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
* Add the failed_calls and rejected_calls fields INFO's commandstats section
* Report child copy-on-write metrics continuously

Module API changes:
* Add the RedisModule_SendChildCOWInfo API
* Add the may-replicate command flag


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.

New commands / args:
* Add SMISMEMBER command that checks multiple members
* Add ZMSCORE command that returns an array of scores
* Add LMOVE and BLMOVE commands that pop and push arbitrarily
* Add RESET command that resets client connection state
* Add COPY command that copies keys
* Add ZDIFF and ZDIFFSTORE commands
* Add ZINTER and ZUNION commands
* Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries
* Add GET parameter to SET command, for more powerful GETSET
* Add exclusive range query to XPENDING
* Add exclusive range query to X[REV]RANGE
* Add GT and LT options to ZADD for conditional score updates
* Add CLIENT INFO and CLIENT LIST for specific ids
* Add IDLE argument to XPENDING command
* Add local address to CLIENT LIST, and a CLIENT KILL filter.
* Add NOMKSTREAM option to XADD command
* Add command introspection to Sentinel
* Add SENTINEL MYID subcommand

New features:
* Dump payload sanitization: prevent corrupt payload causing crashes
  Has flags to enable full O(N) validation (disabled by default).
* ACL patterns for Pub/Sub channels
* Support ACL for Sentinel mode
* Support getting configuration from both stdin and file at the same time
  Lets you avoid storing secrets on the disk.

New features in CLI tools:
* redis-cli RESP3 push support
* redis-cli cluster import support source and target that require auth
* redis-cli URIs able to provide user name in addition to password
* redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites
* redis-cli add -e option to exit with code when command execution fails

Command behavior changes:
* EXISTS should not alter LRU
  In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key.
* OBJECT should not reveal logically expired keys
  Will now behave the same TYPE or any other non-DEBUG command.
* Improve db id range check for SELECT and MOVE
  Changes the error message text on a wrong db index.
* Modify AUTH / HELLO error message
  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
  The limit is now configurable like in SETRANGE, and APPEND.
* GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit

Other behavior changes:
* Optionally (default) fail to start if requested bind address is not available
  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
  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
  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
  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.
  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
* When "supervised" config is enabled, it takes precedence over "daemonize".
* Assertion and panic, print crash log without generating SIGSEGV
* Added crash log report on SIGABRT, instead of silently exiting
* Disable THP (Transparent Huge Pages) if enabled
  If you deliberately enabled it, you'll need to config Redis to keep it.

Bug fixes:
* Handle output buffer limits for module blocked clients
  Could result in a module sending reply to a blocked client to go beyond the
  limit.
* Fix setproctitle related crashes.
  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
* Backup/restore cluster mode keys to slots map for repl-diskless-load=swapdb
  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
  Enabling setting this in the config file in a line after enabling it, would
  have been buggy.
* Reset average ttl when empty databases
  Just causing misleading metric in INFO
* Disable rehash when Redis has child process
  This could have caused excessive CoW during BGSAVE, replication or AOFRW.
* Further improved ACL algorithm for picking categories
  Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER.
* Fix bug with module GIL being released prematurely
  Could in theory (and rarely) cause multi-threaded modules to corrupt memory.
* Fix cluster redirect for module command with no firstkey.
* Reduce effect of client tracking causing feedback loop in key eviction
* Kill disk-based fork child when all replicas drop and 'save' is not enabled
* Rewritten commands (modified for propagation) are logged as their original command
* Fix cluster access to unaligned memory (SIGBUS on old ARM)
* If diskless repl child is killed, make sure to reap the child pid
* Broadcast a PONG message when slot's migration is over, may reduce MOVED responses

Other improvements:
* TLS Support in redis-benchmark
* Accelerate diskless master connections, and general re-connections
* Run active defrag while blocked / loading
* Performance and memory reporting improvement - sds take control of its internal fragmentation
* Speedup cluster failover.

Platform / toolchain support related improvements:
* Optionally (not by default) use H/W Monotonic clock for faster time sampling
* Remove the requirements for C11 and _Atomic supporting compiler
  This would allow to more easily build and use Redis on older systems and
  compilers again.
* Fix crash log registers output on ARM.
* Raspberry build fix.
* Setting process title support for Haiku.
* DragonFlyBSD RSS memory sampling support.

New configuration options:
* Enable configuring OpenSSL using the standard openssl.cnf
* oom-score-adj-values config can now take absolute values (besides relative ones)
* TLS: Add different client cert support.
* 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
* Add INFO field for main thread cpu time, and scrape system time.
* Add total_forks to INFO STATS
* Add maxclients and cluster_connections to INFO CLIENTS
* Add tracking bcast flag and client redirection in client list
* Fixed INFO client_recent_max_input_buffer includes argv array
* 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
* Add data type callbacks for lazy free effort, and unlink
* Add data type callback for COPY command
* Add callbacks for defrag support.
* Add module event for repl-diskless-load swapdb

Module related fixes:
* Moved RMAPI_FUNC_SUPPORTED so that it's usable
* Improve timer accuracy
* Allow '\0' inside of result of RM_CreateStringPrintf
2021-03-01 13:19:18 +00:00
adam
54db4b1ecc redis: updated to 6.0.9
Redis 6.0.9
===========

Upgrade urgency: SECURITY if you use an affected platform (see below).
                 Otherwise the upgrade urgency is MODERATE.

This release fixes a potential heap overflow when using a heap allocator other
than jemalloc or glibc's malloc. See:
https://github.com/redis/redis/pull/7963

Other fixes in this release:

New:
* Memory reporting of clients argv
* Add redis-cli control on raw format line delimiter
* Add redis-cli support for rediss:// -u prefix
* Get rss size support for NetBSD and DragonFlyBSD

Behavior changes:
* WATCH no longer ignores keys which have expired for MULTI/EXEC
* Correct OBJECT ENCODING response for stream type
* Allow blocked XREAD on a cluster replica
* TLS: Do not require CA config if not used

Bug fixes:
* INFO report real peak memory (before eviction)
* Allow requirepass config to clear the password
* Fix config rewrite file handling to make it really atomic
* Fix excessive categories being displayed from ACLs
* Add fsync in replica when full RDB payload was received
* Don't write replies to socket when output buffer limit reached
* Fix redis-check-rdb support for modules aux data
* Other smaller bug fixes

Modules API:
* Add APIs for version and compatibility checks
* Add RM_GetClientCertificate
* Add RM_GetDetachedThreadSafeContext
* Add RM_GetCommandKeys
* Add Swapdb Module Event
* RM_GetContextFlags provides indication of being in a fork child
* RM_GetContextFlags document missing flags: MULTI_DIRTY, IS_CHILD
* Expose real client on connection events
* Minor improvements to module blocked on keys
2020-10-27 10:22:34 +00:00
adam
c9ee0b9afc redis: updated to 6.0.3
Redis 6.0.3:
Upgrade urgency CRITICAL: a crash introduced in 6.0.2 is now fixed.


Redis 6.0.2:
Upgrade urgency MODERATE: many not critical bugfixes in different areas.
                          Critical fix to client side caching when
                          keys are evicted from the tracking table but
                          no notifications are sent.

The following are the most serious fix:

* XPENDING should not update consumer's seen-time
* optimize memory usage of deferred replies - fixed
* Fix CRC64 initialization outside the Redis server itself.
* stringmatchlen() should not expect null terminated strings.
* Cluster nodes availability checks improved when there is
  high Pub/Sub load on the cluster bus.
* Redis Benchmark: Fix coredump because of double free
* Tracking: send eviction messages when evicting entries.
* rax.c updated from upstream antirez/rax.
* fix redis 6.0 not freeing closed connections during loading.

New features:
dd
* Support setcpuaffinity on linux/bsd
* Client Side Caching: Add Tracking Prefix Number Stats in Server Info
* Add --user argument to redis-benchmark.c (ACL)
2020-05-19 09:20:15 +00:00
adam
056adf4356 redis: updated to 6.0.1
Redis 6.0.1
===========

Upgrade urgency HIGH: This release fixes a crash when builiding against
                      Libc malloc.

Here we revert 8110ba888, an optimization that causes a crash due to a
bug in the code. It does not happen with the default allocator because of
differences between Jemalloc and libc malloc, so this escaped all our
testing but was reported by a user. We'll add back the original optimization
that was reverted here later, after checking what happens: it is not a
critical optimization.


Redis 6.0.0 GA
==============

Upgrade urgency CRITICAL: many bugs fixed compared to the last release
                          candidate. Better to upgrade if you see things
                          affecting your environment in the changelog.

Hi all, finally we have Redis 6.0.0 GA! Enjoy this new Redis release.
Most of the documentation was updated today so that you can likely
find what you are looking for about the new features at redis.io.
This is the list of what changed compared to the previoius release candidate:

* XCLAIM AOF/replicas propagation fixed.
* Client side caching: new NOLOOP option to avoid getting notified about
  changes performed by ourselves.
* ACL GENPASS now uses HMAC-SHA256 and have an optional "bits" argument.
  It means you can use it as a general purpose "secure random strings"
  primitive!
* Cluster "SLOTS" subcommand memory optimization.
* The LCS command is now a subcommand of STRALGO.
* Meaningful offset for replicas as well. More successful partial
  resynchronizations.
* Optimize memory usage of deferred replies.
* Faster CRC64 algorithm for faster RDB loading.
* XINFO STREAM FULL, a new subcommand to get the whole stream state.
* CLIENT KILL USER <username>.
* MIGRATE AUTH2 option, for ACL style authentication support.
* Other random bugfixes.
2020-05-03 11:31:39 +00:00
adam
01aaf74f18 redis: ... and new patches 2018-12-13 19:35:12 +00:00
adam
aaa08e8fbc redis: updated to 5.0.3
Redis 5.0.3
===========
Upgrade urgency HIGH: Redis 5 is consolidating, upgrading is a good idea.
                      However there is nothing very critical here, but certain
                      issues resolved could lead to very rare crashes.

Welcome to Redis 5.0.3, several interesting bug fixes here:

* Redis no longer panics when you send data to a replica-mode connection that
  is in MONITOR or SYNC mode.

* Fixes to certain sorted set edge cases. You are unlikely to ever notice those
  issues, but now it is more correct.

* Certain BSD variants now are better supported: build & register logging
  on crash.

* The networking core now recovers if an IPv6 address is listed in bind but
  is actually not able to work because there is no such protocol in the
  system.

* redis-cli cluster mode improved in many ways. Especially the fix subcommand
  work was enhanced to cover other edge cases that were still not covered
  after the work done for Redis 5.

* MEMORY USAGE is now more accurate.

* DEBUG DIGEST-VALUE added in case you want to make sure a given set of keys
  (and not the whole DB) are excatly the same between two instances.

* Fix a potential crash in the networking code related to recent changes
  to the way the reply is consumed.

* Reject EXEC containing write commands against an instance that changed role
  from master to replica during our transaction.

* Fix a crash in KEYS and other commands using pattern matching, in an edge
  case where the pattern contains a zero byte.

* Fix eviction during AOF loading due to maxmemory triggered by commands
  executed in loading state.


Redis 5.0.2
===========
Upgrade urgency: CRITICAL if you use streams and consumer groups.
                 HIGH if you use redis-cli with Redis Cluster.
                 LOW otherwise.

Welcome to Redis 5.0.2. This release fixes two issues with Streams consumer
groups, where items could be returned duplicated by XREADGROUP when accessing
the history, and another bug where XREADGROUP can report some history even
if the comsumer pending list is empty. Both problems were addressed and unit
tests to avoid regressions implemented. Moreover this release fixes some
issue with redis-cli when in cluster mode. Finally some FreeBSD and DragonFly
build problems are now resolved. The list of the commits is below.


Redis 5.0.1
===========
Upgrade urgency: URGENT if you use Redis Streams. MODERATE otherwise.

Hi all, this is the first patch level release of Redis 5. It contains
both fixes and improvements. Here there is a list of the major ones, however
read the commit messages at the end of the changelog if you want to know
more about the smaller things. Let's start with the new features:

* Sentinel now supports authentication! Check the Sentinel official doc
  for more info.

* Redis-cli cluster "fix" is now able to fix a big number of clusters put
  in a bad condition. Previously many corner cases were not covered.

Now the critical fixes:

1. Fix RESTORE mismatch reply when certain keys already expired.
2. Fix an XCLAIM non trivial issue: sometimes the command returned a wrong
   entry or desynchronized the protocol.

And now the other fixes:

3. Stack trace generation on the Raspberry PI (and 32bit ARM) fixed.
4. Don't evict expired keys when the KEYS command is called, in order to
   avoid a mass deletion event. However expired keys are not displayed
   by KEYS as usually.
5. Improvements in the computation of the memory used, when estimating
   the AOF buffers.
6. XRANGE COUNT of 0 fixed.
7. "key misses" stats accounting fixed. Many cache misses were not counted.
8. When in MULTI state, return OOM while accumulating commands and there
   is no longer memory available.
9. Fix build on FreeBSD and possibly others.
10. Fix a crash in Redis modules, thread safe context reply accumulation.
11. Fix a race condition when producing the RDB file for full SYNC.
12. Disable protected mode in Sentinel.
13. More commands now have the HELP subcommand.
14. Fixed an issue about adaptive server HZ timer.
15. Fix cluster-replica-no-failover option name.


Redis 5.0.0
===========
Upgrade urgency CRITICAL: Several fixes to streams AOF and replication.

1. The new Stream data type. https://redis.io/topics/streams-intro
2. New Redis modules APIs: Timers, Cluster and Dictionary APIs.
3. RDB now store LFU and LRU information.
4. The cluster manager was ported from Ruby (redis-trib.rb) to C code
   inside redis-cli. Check `redis-cli --cluster help` for more info.
5. New sorted set commands: ZPOPMIN/MAX and blocking variants.
6. Active defragmentation version 2.
7. Improvemenets in HyperLogLog implementations.
8. Better memory reporting capabilities.
9. Many commands with sub-commands now have an HELP subcommand.
10. Better performances when clients connect and disconnect often.
11. Many bug fixes and other random improvements.
12. Jemalloc was upgraded to version 5.1
13. CLIENT UNBLOCK and CLIENT ID.
14. The LOLWUT command was added. http://antirez.com/news/123
15. We no longer use the "slave" word if not for API backward compatibility.
16. Differnet optimizations in the networking layer.
17. Lua improvements:
    - Better propagation of Lua scripts to replicas / AOF.
    - Lua scripts can now timeout and get in -BUSY state in the replica as well.
18. Dynamic HZ to balance idle CPU usage with responsiveness.
19. The Redis core was refactored and improved in many ways.
2018-12-13 19:34:33 +00:00
adam
6374fac93b redis: updated to 4.0.10
Redis 4.0.10 fixes a number of important issues:

* Important security issues related to the Lua scripting engine.
  Please check https://github.com/antirez/redis/issues/5017
  for more information.

* A bug with SCAN, SSCAN, HSCAN and ZSCAN, that may not return all the elements.
  We also add a regression test that can trigger the issue often when present, and
  may in theory be able to find unrelated regressions.

* A PSYNC2 bug is fixed: Redis should not expire keys when saving RDB files
  because otherwise it is no longer possible to use such RDB file as a base
  for partial resynchronization. It no longer represents the right state.

* Compatibility of AOF with RDB preamble when the RDB checksum is disabled.

* Sentinel bug that in some cases prevented Sentinel to detect that the master
  was down immediately. A delay was added to the detection.

* Other minor issues.
2018-08-02 14:47:34 +00:00
fhajny
ad94872c76 Fix missing llroundl on NetBSD. Fixes pkg/52599. 2018-04-23 14:57:57 +00:00
fhajny
9188f158d6 Redis 4.0.1
Bug fixes:
- Loading two or more modules exporting native data types resulted
  into the inability to reload the RDB file.
- Crash in modules when calling from Lua scripts module commands that
  would block.
- A Redis Cluster crash due to mis-handling of the "migrate-to"
  internal flag.
- Other smaller fixes not worth of a release per se, but nice to add
  here.


Redis 4.0.0

Major features

- Redis modules system. Redis now allows developers to write modules
  that can extend the Redis functionalities and implement new data
  types.
- Partial Replication (PSYNC) version 2.
- Cache eviction improvements. Redis 4.0 implements LFU (Least
  Frequently Used) as a new eviction algorithm, and improves the
  functionality, performances and precision of the existing algorithms.
- Lazy freeing of keys. Redis is now able to delete keys in the
  background in a different thread without blocking the server.
- Mixed RDB-AOF format. If enabled the new format is used when
  rewriting the AOF file: the rewrite uses the more compact and faster
  to generate RDB format, and an AOF stream is appended to the file.
- A new MEMORY command, able to perform memory analysis of different
  kinds: troubleshooting of memory issues (with MEMORY DOCTOR, similar
  to LATENCY DOCTOR), reporting of the amount of memory used by a single
  key, more in-depth reporting of Redis memory usage compared to what
  the INFO command offers.
- Redis Cluster support for NAT / Docker.
- Redis uses now less memory in order to store the same amount of
  data. The gain depends a lot on the kind of dataset stored.
- Redis is now able to defragment the used memory and reclaim space
  incrementally while running.

Smaller features

- Improvements to the RDB format to support 64 bit lengths, binary
  sorted set scores, and more.
- SWAPDB command: ability to completely and immediately (no latency)
  replace two Redis databases.
- Improvements to `dict.c`, the Redis hash table implementation.
- Security improvements mapping POST and Host: commands to QUIT in
  order to prevent cross protocol scripting attacks.
- RPUSHX and LPUSHX now accept a variable number of elements.
- Reporting of additional memory used by copy on write in the INFO
  output.
- Serious refactoring of many core parts of Redis.

Migrating from 3.2 to 4.0

- The Redis Cluster bus protocol of 4.0 is no longer compatible with
  Redis 3.2.
- Redis Cluster CLUSTER NODES output is now slightly different.
- Writable slaves do not propagate writes to their sub-slaves, so
  writes to writable slaves remain just local.
- The RDB format changed. Redis 4.0 is still able to read 3.2 (and all
  the past versions) files, but not the other way around.
- Certain log formats and sentences are different in Redis 4.0.
- Certain INFO fields, especially related to replication, are now
  different.
- GEODIST, GEOPOS and GEOHASH return values changed for non existing
  keys
- The SLOWLOG command entires contain additional two fields: the
  client address and name. This is documented in the SLOWLOG command online
  documentation.
2017-08-02 19:53:37 +00:00
fhajny
32e9576822 Fix NetBSD support. Thanks to Mustafa Dogan! 2016-11-14 14:30:17 +00:00
fhajny
e78b1314db Update databases/redis to 3.2.1.
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.
2016-06-19 21:28:58 +00:00
fhajny
8393d94814 Update databases/redis to 3.2.0.
Redis 3.2 contains significant changes to the API and
implementation of Redis.

- A new set of commands for Geo indexing was added (GEOADD,
  GEORADIUS and related commands).
- The new BITFIELD command handles contiguous arrays of integers
  or counters of arbitrary bits width and offset inside strings.
- Memory optimizations to hold the same data in less memory.
- Lua scripts can now contain side effects using the new effect
  replication.
- A complete remote Lua debugger is available in order to make
  writing scripts a simpler task.

Read the release notes for the full set of changes:

https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES
2016-05-06 14:00:45 +00:00
fhajny
98c0abb137 Update databases/redis to 3.0.2.
--[ Redis 3.0.2 ] Release date: 4 Jun 2015

Upgrade urgency: HIGH for Redis because of a security issue.
                 LOW for Sentinel.

* [FIX] Critical security issue fix by Ben Murphy: http://t.co/LpGTyZmfS7
* [FIX] SMOVE reply fixed when src and dst keys are the same. (Glenn Nethercutt)
* [FIX] Lua cmsgpack lib updated to support str8 type. (Sebastian Waisbrot)

* [NEW] ZADD support for options: NX, XX, CH. See new doc at redis.io.
        (Salvatore Sanfilippo)
* [NEW] Senitnel: CKQUORUM and FLUSHCONFIG commands back ported.
        (Salvatore Sanfilippo and Bill Anderson)

--[ Redis 3.0.1 ] Release date: 5 May 2015

Upgrade urgency: LOW for Redis and Cluster, MODERATE for Sentinel.

* [FIX] Sentinel memory leak due to hiredis fixed. (Salvatore Sanfilippo)
* [FIX] Sentinel memory leak on duplicated instance. (Charsyam)
* [FIX] Redis crash on Lua reaching output buffer limits. (Yossi Gottlieb)
* [FIX] Sentinel flushes config on +slave events. (Bill Anderson)
2015-06-09 12:17:56 +00:00
fhajny
4837a9b269 Update redis to 3.0.0.
--[ Redis 3.0.0 ] Release date: 1 Apr 2015

>> What's new in Redis 3.0 compared to Redis 2.8?

* Redis Cluster: a distributed implementation of a subset of Redis.
* New "embedded string" object encoding resulting in less cache
  misses. Big speed gain under certain work loads.
* AOF child -> parent final data transmission to minimize latency due
  to "last write" during AOF rewrites.
* Much improved LRU approximation algorithm for keys eviction.
* WAIT command to block waiting for a write to be transmitted to
  the specified number of slaves.
* MIGRATE connection caching. Much faster keys migraitons.
* MIGARTE new options COPY and REPLACE.
* CLIENT PAUSE command: stop processing client requests for a
  specified amount of time.
* BITCOUNT performance improvements.
* CONFIG SET accepts memory values in different units (for example
  you can use "CONFIG SET maxmemory 1gb").
* Redis log format slightly changed reporting in each line the role
  of the instance (master/slave) or if it's a saving child log.
* INCR performance improvements.

>> Refactoring changes (no new features nor bug fixes)

* Blocking operations full refactoring (blocked.c)
* Client output buffer memory tracking refactored.

See full release notes for 3.0.0:

https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES
2015-04-13 11:33:35 +00:00
fhajny
603d2382dc Update redis to 2.8.18.
* [FIX] Linenoise updated to be more VT100 compatible. (Salvatore Sanfilippo)
* [FIX] A number of typos fixed inside comments. (Various authors)
* [FIX] redis-cli no longer quits after long timeouts. (Matt Stancliff)
* [FIX] Test framework improved to detect never terminating scripts, cleanup
        instances on crashes. (Salvatore Sanfilippo)
* [FIX] PFCOUNT can be used on slaves now. (Salvatore Sanfilippo)
* [FIX] ZSCAN no longer report very small scores as 0. (Matt Stancliff,
        Michael Grunder, Salvatore Sanfilippo)
* [FIX] Don't show the ASCII logo if syslog is enabled. Redis is now
        an Enterprise Grade product. (Salvatore Sanfilippo)

* [NEW] EXPERIMENTAL: Diskless replication, for more info check the doc at
        http://redis.io/topics/replication. (Salvatore Sanfilippo).
* [NEW] Transparent Huge Pages detection and reporting in logs and
        LATENCY DOCTOR output. (Salvatore Sanfilippo)
* [NEW] Many Lua scripting enhancements: Bitops API, cjson upgrade and tests,
        cmsgpack upgrade. (Matt Stancliff)
* [NEW] Total and instantaneous Network bandwidth tracking in INFO.
* [NEW] DEBUG POPULATE two args form implemented (old form still works).
        The second argument is the key prefix. Default is "key:" (Salvatore
        Sanfilippo)
* [NEW] Check that tcp-backlog is matched by /proc/sys/net/core/somaxconn, and
        warn about it if not. (Salvatore Sanfilippo)
2014-12-10 13:36:54 +00:00
fhajny
1377b63466 Update redis to 2.8.?
Changes:

2.8.3
* [FIX] Sentinel instance role sampling fixed, the system is now more
        reliable during failover and when reconfiguring instances with
        non matching configuration.
* [FIX] Inline requests are now handled even when terminated with just LF.
* [FIX] Replication timeout handling greatly improved, now the slave is able
        to ping the master while removing the old data from memory, and while
        loading the new RDB file. This avoid false timeouts sensed by
        masters.
* [FIX] Fixed a replication bug involving 32 bit instances and big datasets
        hard to compress that resulted into more than 2GB of RDB file sent.
* [FIX] Return error for inline requests with unbalanced quotes.
* [FIX] Publish the slave replication offset even when disconnected from the
        master if there is still a cached master instance.

2.8.2
* [FIX] Sentinel better desynchronization to avoid split-brain elections
        where no Sentinel managed to get elected.
* [FIX] Stop accepting writes on "MISCONF" error only if master, not slave.
* [FIX] Reply to PING with an error on "MISCONF" errors.

2.8.1
* [FIX] Fixed a bug in "new Sentinel" config propagation.
* [FIX] Fixed a false positive in Redis tests.

2.8.0
* [FIX] Fixed an error in rdbWriteRaw() that should have no practical impact.
* [NEW] Log the new master when SLAVEOF command is used.
* [NEW] Sentinel code synchronized with the unstable branch, the new Sentinel
        is a reimplementation that uses more reliable algorithms.

2.8.0 RC6
* [NEW] SCAN, SSCAN, HSCAN, ZSCAN commands.

2.8.0 RC5
* [FIX] redis-cli: don't crash with --bigkeys when the key no longer exist.
* [FIX] Allow AUTH / PING when disconnected from slave and serve-stale-data
        is no.
* [FIX] PSYNC: safer handling of PSYNC requests with offsets in the future.
* [FIX] Replication: Fix master timeout detection.
* [FIX] Replication: Correctly install the write handler after successful
        PSYNC.

2.8.0 RC4
* [FIX] Fixed a serious EVAL memory leak in the Lua stack.
* [FIX] Fixed server startup when no IPv6 address exists in any interface.
* [FIX] Send MISCONFIG error when BGSAVE fails because can't fork.
* [FIX] Memory efficiency with large (> a few kbytes) values improved
        considerably.
* [NEW] DEBUG SDSLEN for sds memory debugging.

2.8.0 RC3
* [FIX] Improved expired keys collection algorithm. Even under heavy load keys
        to be expired can't accumulate because of lack of CPU time.
* [FIX] Replication speed regression fixed (issue #1238).
* [FIX] Fixed an hard to trigger PSYNC bug.
* [FIX] Fixed Issue #1240, ZUNIONSTORE could lead to wrong result.
* [NEW] Add per-db average TTL information in INFO output.
* [NEW] redis-benchmark improvements.
* [NEW] dict.c API wrong usage detection.

2.8.0 RC2
* [FIX] Fixed a critical replication bug, see issue #1221.
* [NEW] The new inline protocol now accepts quoted strings like, for example
        you can now type in a telnet session: set 'foo bar' "hello world\n".

2.8.0 RC1
* [NEW] Slaves are now able to partially resynchronize with the master,
        so most of the times a full resynchronization with the RDB creation
        in the master side is not needed when the master-slave link is
        disconnected for a short amount of time.
* [NEW] Experimental IPv6 support.
* [NEW] Slaves explicitly ping masters now, a master is able to detect
        a timed out slave independently.
* [NEW] Masters can stop accepting writes if not enough slaves with a given
        maximum latency are connected.
* [NEW] Keyspace changes notifications via Pub/Sub.
* [NEW] CONFIG SET maxclients is now available.
* [NEW] Ability to bind multiple IP addresses.
* [NEW] Set process names so that you can recognize, in the "ps" command
        output, the listening port of an instance, or if it is a saving child.
* [NEW] Automatic memory check on crash.
* [NEW] CONFIG REWRITE is able to materialize the changes in the configuration
        operated using CONFIG SET into the redis.conf file.
* [NEW] More NetBSD friendly code base.
* [NEW] PUBSUB command for Pub/Sub introspection capabilities.
* [NEW] EVALSHA can now be replicated as such, without requiring to be
        expanded to a full EVAL for the replication link.
* [NEW] Better Lua scripts error reporting.
* [NEW] SDIFF performance improved.
* [FIX] A number of bugfixes.

2.6.17
* [FIX] redis-cli: fix big keys search when the key no longer exist.
* [FIX] Allow AUTH / PING when disconnected from slave with serve-stale-data
        on.
* [FIX] redis-benchmark: update help for new __rand_int__ form.
* [FIX] Fix broken rdbWriteRaw() return value check in rdb.c (harmless).
* [FIX] Log to what master a slave is going to connect to.
* [FIX] Only run the fast active expire cycle if master & enabled.
* [FIX] Fixed a replication bug involving 32 bit instances and big datasets
        hard to compress that resulted into more than 2GB of RDB file sent.
2014-01-02 17:26:19 +00:00
bsiegert
19a15bf4dc Support for MirBSD. Also, no strtold. 2014-01-01 16:08:24 +00:00
mspo
450f792ed4 Import redis from wip!
Redis is a persistent key-value database with built-in net interface
2013-06-13 17:41:34 +00:00