From 90154ff7bf99b3b696d0ae7e4749b9a2355f0e2f7aacc1ff06a9a17d4cfc79f4 Mon Sep 17 00:00:00 2001 From: Martin Pluskal Date: Mon, 8 Mar 2021 12:06:24 +0000 Subject: [PATCH] Accepting request 877720 from home:gmccarter:branches:server:database - redis 6.2.1 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) - includes changes from 6.2.0 GA: * Integer overflow on 32-bit systems (CVE-2021-21309) 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) OBS-URL: https://build.opensuse.org/request/show/877720 OBS-URL: https://build.opensuse.org/package/show/server:database/redis?expand=0&rev=169 --- redis-6.0.12.tar.gz | 3 - redis-6.2.1.tar.gz | 3 + redis-conf.patch | 46 ++++--- redis-sentinel@.service | 2 +- redis.changes | 276 ++++++++++++++++++++++++++++++++++++++++ redis.spec | 2 +- 6 files changed, 310 insertions(+), 22 deletions(-) delete mode 100644 redis-6.0.12.tar.gz create mode 100644 redis-6.2.1.tar.gz diff --git a/redis-6.0.12.tar.gz b/redis-6.0.12.tar.gz deleted file mode 100644 index 5690920..0000000 --- a/redis-6.0.12.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f16ad973d19f80f121e53794d5eb48a997e2c6a85b5be41bb3b66750cc17bf6b -size 2276349 diff --git a/redis-6.2.1.tar.gz b/redis-6.2.1.tar.gz new file mode 100644 index 0000000..083cdf1 --- /dev/null +++ b/redis-6.2.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd222505012cce20b25682fca931ec93bd21ae92cb4abfe742cf7b76aa907520 +size 2438367 diff --git a/redis-conf.patch b/redis-conf.patch index c9e6395..960ae64 100644 --- a/redis-conf.patch +++ b/redis-conf.patch @@ -2,34 +2,34 @@ Index: redis.conf =================================================================== --- redis.conf.orig +++ redis.conf -@@ -221,7 +221,7 @@ tcp-keepalive 300 - +@@ -244,7 +244,7 @@ # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. + # When Redis is supervised by upstart or systemd, this parameter has no impact. -daemonize no +daemonize yes # If you run Redis from upstart or systemd, Redis can interact with your # supervision tree. Options: -@@ -233,7 +233,7 @@ daemonize no - # UPSTART_JOB or NOTIFY_SOCKET environment variables - # Note: these supervision methods only signal "process is ready." - # They do not enable continuous pings back to your supervisor. --supervised no +@@ -262,7 +262,7 @@ + # The default is "no". To run under upstart/systemd, you can simply uncomment + # the line below: + # +-# supervised auto +supervised systemd # If a pid file is specified, Redis writes it where specified at startup # and removes it at exit. -@@ -244,7 +244,7 @@ supervised no +@@ -276,7 +276,7 @@ # - # Creating a pid file is best effort: if Redis is not able to create it - # nothing bad happens, the server will start and run normally. + # Note that on modern Linux systems "/run/redis.pid" is more conforming + # and should be used instead. -pidfile /var/run/redis_6379.pid +pidfile /var/run/redis/default.pid # Specify the server verbosity level. # This can be one of: -@@ -257,7 +257,8 @@ loglevel notice +@@ -289,7 +289,8 @@ # Specify the log file name. Also the empty string can be used to force # Redis to log on the standard output. Note that if you use standard # output for logging but daemonize, logs will be sent to /dev/null @@ -39,7 +39,7 @@ Index: redis.conf # To enable logging to the system logger, just set 'syslog-enabled' to yes, # and optionally update the other syslog parameters to suit your needs. -@@ -362,7 +363,7 @@ rdb-del-sync-files no +@@ -441,7 +442,7 @@ # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. @@ -52,12 +52,24 @@ Index: sentinel.conf =================================================================== --- sentinel.conf.orig +++ sentinel.conf -@@ -1,4 +1,8 @@ - # Example sentinel.conf -+# +@@ -24,16 +24,18 @@ + # Note that Redis will write a pid file in /var/run/redis-sentinel.pid when + # daemonized. + daemonize no ++supervised systemd + + # When running daemonized, Redis Sentinel writes a pid file in + # /var/run/redis-sentinel.pid by default. You can specify a custom pid file + # location here. +-pidfile /var/run/redis-sentinel.pid +pidfile /var/run/redis/sentinel-default.pid + + # Specify the log file name. Also the empty string can be used to force + # Sentinel to log on the standard output. Note that if you use standard + # output for logging but daemonize, logs will be sent to /dev/null +-logfile "" +loglevel notice +logfile /var/log/redis/sentinel-default.log - # *** IMPORTANT *** - # + # sentinel announce-ip + # sentinel announce-port diff --git a/redis-sentinel@.service b/redis-sentinel@.service index b0c5a6b..24a3ec6 100644 --- a/redis-sentinel@.service +++ b/redis-sentinel@.service @@ -4,7 +4,7 @@ After=network.target PartOf=redis-sentinel.target [Service] -Type=simple +Type=notify User=redis Group=redis PrivateTmp=true diff --git a/redis.changes b/redis.changes index 305fd9d..5018ba5 100644 --- a/redis.changes +++ b/redis.changes @@ -1,3 +1,279 @@ +------------------------------------------------------------------- +Thu Mar 4 13:21:32 UTC 2021 - Gareth McCarter + +- redis 6.2.1 + 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) + +- includes changes from 6.2.0 GA: + * Integer overflow on 32-bit systems (CVE-2021-21309) + 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) + +- includes changes from 6.2 RC3: + 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) + +- includes changes from 6.2 RC2: + 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) + +- includes changes from 6.2 RC1: + 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) + ------------------------------------------------------------------- Tue Mar 2 22:51:13 UTC 2021 - Илья Индиго diff --git a/redis.spec b/redis.spec index a9acbe0..aa8aacc 100644 --- a/redis.spec +++ b/redis.spec @@ -20,7 +20,7 @@ %define _log_dir %{_localstatedir}/log/%{name} %define _conf_dir %{_sysconfdir}/%{name} Name: redis -Version: 6.0.12 +Version: 6.2.1 Release: 0 Summary: Persistent key-value database License: BSD-3-Clause