forked from redis/redis
-
Notifications
You must be signed in to change notification settings - Fork 0
Cluster asm rebase #108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Cluster asm rebase #108
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…#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>
ShooterIT
approved these changes
Oct 18, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
pull latest commits from unstable