Package Release Info

redis-modules-8.10.1-bp161.1.3

Update Info: Base Release
Available in Package Hub : 16.1

platforms

AArch64
ppc64le
s390x
x86-64

subpackages

redis-bloom
redis-json
redis-search
redis-timeseries

Change Logs

Version: 8.10.1-bp160.1.1
* Mon Aug 17 2026 Marcus Rueckert <mrueckert@suse.de>
- Update to 8.10.1
  Update urgency: SECURITY: There are security fixes in the release.
  - Security fixes
  - (CVE-2026-62356) Miscalculated buffer size in CMSketch RDB
    loading may lead to heap OOB write
  - Out-of-bounds access in TopK heap cleanup path (MOD-15410)
  - Use-after-free in the TLS pending-data list when a command
    closes another pending connection
  - A malicious RDB payload with an out-of-range SLOT_INFO slot
    id causes memory corruption during RDB loading, which may
    lead to Remote Code Execution
  - Vector Sets: missing node level validation when loading a
    vector set from RDB may lead to out-of-bounds access
  - Vector Sets: use-after-free when VREM mutates the HNSW graph
    while background VSIM threads are still running
  - Vector Sets: a negative hnsw_search() return was treated as a
    huge unsigned count, reading past the end of the result
    arrays
  - TLS client certificate authentication bypass: a Common Name
    containing an embedded NUL byte was truncated, allowing a
    client to authenticate as another (possibly privileged) ACL
    user
  - #15594 Use-after-free in the blocked-client list when
    reprocessing a command evicts another client blocked on the
    same key
* Tue Aug 04 2026 Martin Pluskal <mpluskal@suse.com>
- Add lazyfree-test-explicit-stream-ids.patch: "lazy free a stream with
  all types of metadata" builds its stream with server-generated IDs, so
  the number of nodes in the stream's radix tree is the number of
  distinct milliseconds the 1000 XADDs happened to span -- entries
  sharing a millisecond share an ID prefix and collapse into one
  compressed node. That node count is what lazyfreeGetFreeEffort()
  weighs against LAZYFREE_THRESHOLD, so a builder quick enough to run
  the loop in well under 64ms frees the stream inline instead of lazily
  and the test's lazyfreed_objects stays 0. It measured how fast the
  worker was rather than lazyfree, and duly failed on the faster
  aarch64 workers while passing on the slower ones. Adding the entries
  with explicit IDs gives the radix tree the same shape everywhere
* Fri Jul 31 2026 Marcus Rueckert <mrueckert@suse.de>
- Update redis-conf.patch
  Do not load modules which we split out into subpackages in the
  default config
* Fri Jul 31 2026 Andreas Schneider <asn@cryptomilk.org>
- Fix building for Leap
* Fri Jul 31 2026 Martin Pluskal <mpluskal@suse.com>
- Run the test suite with four clients instead of the default sixteen:
  each of those starts several servers, which oversubscribes an OBS
  worker badly enough that a run whose per-unit times sum to about
  2900s finishes in 600s of wall clock. What then fails is whatever has
  a fixed deadline -- a cluster MEET handshake that must complete
  inside cluster-node-timeout, an AOF child that must be reaped before
  a shutdown -- and each architecture lost a different one, which is
  contention rather than a bug in any of them
- Add scripting-test-disable-aof-after-use.patch: a test switches
  appendonly on and never switches it back, leaving an AOF rewrite
  child that serverCron cannot reap while a busy script runs, so the
  next test's SHUTDOWN NOSAVE is refused and the server it expects to
  die stays up. Same fix valkey made, which redis has not picked up
- Skip the "Active defrag IDMP streams" tests on 32-bit x86, where
  residual small-bin waste settles just above the thresholds the test
  itself sets, so the defrag cycle never reaches its stop condition
* Fri Jul 31 2026 Martin Pluskal <mpluskal@suse.com>
- Restrict the "modules" flavour to x86_64 and aarch64 -- RedisBloom and
  RedisTimeSeries abort on anything else with "only supports 64-bit
  architectures (x64, arm64v8)", redisjson's vendored redis-module is
  64-bit only, and modules/common.mk maps no other architecture at all
- Do not build the "test" flavour on s390x -- hash field TTLs do not
  survive an RDB reload and a cluster test aborts the run there, both
  upstream big-endian bugs on a platform upstream does not support
- Invoke the test suite directly rather than through "make test", which
  hardcodes a bare runtest, so it can be given --no-latency and skips for
  the tests that measure the build worker rather than redis:
  * two tests bounding wall-clock time that --no-latency does not cover
  * the crash-report tests (integration/logging, unit/moduleapi/crash) on
    architectures upstream never gated them on
  * the active-defrag replicaof test on ppc64le, which does not converge
    there
* Thu Jul 30 2026 Martin Pluskal <mpluskal@suse.com>
- Split the build into three multibuild flavours:
  * The default flavour builds and packages only the server, and no longer
    runs the test suite -- a rebuild is down from about 24 minutes to a
    little over two, which is the wait everything that build-depends on
    redis pays. tcl and procps are no longer build dependencies of it, and
    %%check now does a cheap smoke test instead of the suite
  * New "test" flavour runs the tcl test suite, and runs it for real: it
    used to be invoked with "|| true" because it kept failing to start a
    server with 'child process exited abnormally', which turns out to be
    servers leaked by an earlier run of the suite still sitting on ports
    handed to the test clients. In a fresh build root there are none and
    all 6054 tests pass. The flavour packages nothing, so a red test run
    blocks no rebuild
  * New "modules" flavour builds the four modules upstream vendors under
    modules/ since 8.x and ships them as redis-bloom, redis-search,
    redis-json and redis-timeseries, installed below
    %%{_libdir}/redis/modules. It needs cmake, rust, autotools, boost and a
    python3 with pip on top of the server's own dependencies, which is
    exactly why it has to be kept out of the server flavour
- Add _service with two cargo_vendor runs, plus the resulting
  vendor-redisearch.tar.zst and vendor-redisjson.tar.zst: the Rust parts of
  redisearch and redisjson fetch from crates.io and from three git
  repositories, which cannot work in an offline build root
- Build the modules with IGNORE_MISSING_DEPS=1, upstream's own escape hatch:
  redisearch refuses to build unless it recognises the distribution, and its
  checker only knows dpkg, rpm-on-rhel, apk and tdnf systems
- Do not let the module build reach the network for its own dependencies:
  * point redisearch at the system boost headers rather than the boost
    release it downloads from github; everything it uses is header-only
  * build with USE_SVS=OFF, which drops the eve, fmt, spdlog, tomlplusplus
    and robin-map git clones and the pre-compiled ScalableVectorSearch
    shared library redisearch would otherwise download from Intel;
    VectorSimilarity then uses its own HNSW and flat indexes
  * add cpu_features 0.10.1 as a source, the one dependency VectorSimilarity
    still clones once SVS is off
- Add vectorsimilarity-guard-svs-include.patch: USE_SVS=OFF does not compile,
  because two translation units reach for the SVS headers unconditionally
  (upstream pull request 1006)
- Disable LTO for the modules: modules.yaml asks redisearch for it, which
  there means clang driving ld.bfd through LLVMgold.so, a plugin that is not
  shipped, so every compiler probe failed before a line was compiled
- Build the modules with -Wno-error=return-type and -fPIC: a function in the
  redismodule.h of the vendored redismodule-rs falls off the end, and
  redistimeseries links a bundled libevent whose own build produces a
  non-PIC static library, which on aarch64 is a hard relocation error
- Build redisjson without --all-targets: that includes its test executables,
  which reference the RedisModule_* API the server only provides at load time
  and so cannot link
- Let rpm extract the debug info of the Rust modules: both split it out into
  a .so.debug sibling themselves and leave a dangling .gnu_debuglink, which
  made find-debuginfo skip the module altogether
- Drop the openSUSE Leap 15.x conditionals, 15.6 is out of support
* Thu Jul 30 2026 Martin Pluskal <mpluskal@suse.com>
- Build the server only, restoring the build: since 8.x upstream vendors
  redisbloom, redisearch, redisjson and redistimeseries into modules/ and
  the default target builds them, turning any module failure into a hard
  error. All four fail here and none of them was ever packaged, so the
  build was failing on every architecture for artifacts that are then
  discarded. Select just the server with "build core"
  * redisbloom needs cmake and a python3 providing pip, since its readies
    build system probes the interpreter with "python3 -m pip --version"
  * redisearch aborts with "Unsupported operating system: unknown"
  * redisjson is Rust and reaches for crates.io, so it needs vendored
    crates to build offline at all
  * redistimeseries fails at link time
  Building the modules belongs in a separate multibuild flavour, so that
  the server's own rebuilds do not pull in cmake, autotools and a Rust
  toolchain
- Drop redis-full.conf from %doc: it is generated only by the module
  build, where it carries the loadmodule lines, and would otherwise
  reference modules this package does not ship
* Wed Jul 29 2026 Marcus Rueckert <mrueckert@suse.de>
- Update to 8.10.0
  Major changes compared to 8.8
  - Compact hashes - a new hash encoding that reduces memory usage
    by storing hash field names just once for keys that share a
    schema
  - New command: HIMPORT - high-throughput compact hash bulk
    insertion
  - TLS peer certificate-based server-to-server authentication
  - New commands: LMOVEM, BLMOVEM - move multiple elements between
    lists
  - New command: SUNIONCARD - get the cardinality of the union of
    multiple sets
  - New command: SDIFFCARD - get the cardinality of the difference
    between sets
  - New command: BACKUP - node-side implementation for backup and
    restore based on multi-part AOF (MP-AOF)
  - XREAD, XREADGROUP - new MAXCOUNT and MAXSIZE arguments to cap
    the cumulative reply entries and size
  - New command: FT.ALIASLIST - get all aliases for the index
  - Stemmer support for Malay and Tagalog languages
  - JSONPath extensions
  - New commands: TS.NRANGE, TS.NREVRANGE - Query a range across
    multiple time series; group results by timestamp
  - New command: TS.READ - optionally blocking read
  - New command: TS.QUERYLABELS - Get a list of labels and
    label-values
  - New command: TS.MRANGE, TS.MREVRANGE - new EXCLUDEEMPTY
    argument to exclude series with no reported samples
  - Performance improvements
* Thu Jul 23 2026 Marcus Rueckert <mrueckert@suse.de>
- Update to 8.8.1
  Security fixes
  - RedisBloom/RedisBloom#1044 Crafted RESTORE payloads in
    RedisBloom and TDigest may trigger out-of-bounds writes,
    potentially leading to remote code execution