Skip to content

Conversation

@tezc
Copy link
Owner

@tezc tezc commented Oct 17, 2025

pull latest commits from unstable

Polaris-911 and others added 11 commits October 11, 2025 15:40
…#14342)

While reviewing the Redis code, we discovered that optimizations for
unaligned memory accesses are not enabled on RISC-V. After testing
siphash separately, we found some performance improvements in this area
and hope to add them.

The zicclsm extension, which includes unaligned memory accesses, is
required on RISC-V, as specified in the [RVA20U64
specification](https://github.com/riscv/riscv-profiles/blob/5879c13c924ec5636995c5883f40337e83f6049a/src/profiles.adoc#L658).
GCC also provides the macro
[zicclsm](https://gcc.gnu.org/pipermail/gcc-patches/2024-February/644655.html)
to detect the zicclsm extension.

Supported versions: GCC 14.1.0 and above
Close redis#14214

1. When the server.allow_access_expired flag is set to 1, it allows
access to expired keys that have not yet been evicted. All places
involving access to expired keys should consider the impact of this
parameter.
2. The modifications involve five methods: hfieldIsExpired,
hashTypeNext, hashTypeLength, keyIsExpired, and hashTypeIsExpired. When
the server.allow_access_expired flag is set to 1, these methods will not
skip expired keys, otherwise they follow the normal logic execution.

---------

Co-authored-by: debing.sun <debing.sun@redis.com>
This PR is based on:
valkey-io/valkey#2347

This was introduced in redis#13512

The server crashes with a null pointer dereference when lookupKey() is
called from handleClientsBlockedOnKey(). The crash occurs because
server.executing_client is NULL, but the code attempts to access
server.executing_client->cmd->proc without checking.

**Crash scenario:**
Client 1 enables CLIENT NO-TOUCH
Client 2 blocks on BRPOP mylist 0
Client 1 executes RPUSH mylist elem
When unblocking Client 2, lookupKey() dereferences NULL
server.executing_client → crash

**Solution**
Added proper null checks before dereferencing server.executing_client:
Check if LOOKUP_NOTOUCH flag is already set before attempting to modify
it
Verify both server.current_client and server.executing_client are not
NULL before accessing their members
Maintain the TOUCH command exception for scripts

**Testing**
Added regression test in tests/unit/type/list.tcl that reproduces and
verifies the fix for this crash scenario.

This fix is based on valkey-io/valkey#2347

Co-authored-by: Uri Yagelnik <uriy@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
…edis#14309)

This PR introduces **vectorized implementations of `BITCOUNT`** for
x86_64 targets with AVX2 and AVX512 support.

- **AVX2 path**: processes 32B at a time, using unrolled POPCNT on
64-bit lanes with independent accumulators to reduce data dependencies.
- **AVX512 path**: leverages `VPOPCNTDQ` on 64B chunks with
`_mm512_reduce_add_epi64` to efficiently aggregate results across
512-bit vectors.
- Both paths include cache prefetching hints to better overlap memory
fetches with computation. This was proved to matter in
redis#14103.
- Fallbacks to the scalar implementation if hardware support is
unavailable.

---------

Co-authored-by: debing.sun <debing.sun@redis.com>
…ancellation (redis#14420)

This issue was introduced by redis#10440
In that PR, we avoided resetting the current user during processCommand,
but overlooked the fact that this client might not be the current one,
it could be a client that was previously blocked due to shutdown.
If we don’t reset these clients, and the shutdown is canceled, then when
these clients continue executing other commands, they will trigger an
assertion.

This PR delays the operation of resetting the client to
processUnblockedClients and no longer skips SHUTDOWN_BLOCKED clients.
…edis#14423)

When the `lp_count` of a stream entry is incorrect, and we are
performing a reverse iteration, we can normally move backward by
`lp_count` to locate the previous entry.
However, if `lp_count` is wrong, during forward iteration, after
obtaining the flag, ID, and other fields, we may step beyond the current
entry into the start position of the next entry(where we came from),
which could cause an infinite loop.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Extended the support of 7.2 and align it with 7.4
Added extra section to instruct the developers to leverage the
proprietary Intel SVS binaries as an optional way during the build and
with a clear license disclaimer

---------

Co-authored-by: meiravgri <109056284+meiravgri@users.noreply.github.com>
@tezc tezc requested a review from ShooterIT October 17, 2025 19:38
@tezc tezc merged commit e290127 into cluster-asm Oct 18, 2025
27 of 29 checks passed
@tezc tezc deleted the cluster-asm-rebase branch October 18, 2025 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants