<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Valkey on Quanye&#39;s Blog</title>
    <link>https://quanyeyang.github.io/valkey/</link>
    <description>Recent content in Valkey on Quanye&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>quanyemostima@gmail.com (quanye)</managingEditor>
    <webMaster>quanyemostima@gmail.com (quanye)</webMaster>
    <copyright>© 2026 quanye</copyright>
    <lastBuildDate>Sun, 26 Jul 2026 16:00:00 +0800</lastBuildDate><atom:link href="https://quanyeyang.github.io/valkey/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>RESP3 push frame torn apart when a pubsub message &gt;= 16384 bytes is delivered to the publishing connection (9.0 regression)</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-resp3-push-frame-torn/</link>
      <pubDate>Wed, 22 Jul 2026 11:55:36 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-resp3-push-frame-torn/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;First issue binbin assigned directly to me — I used it to dig into this code path.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Original issue: &lt;a href=&#34;https://github.com/valkey-io/valkey/issues/4231&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/issues/4231&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Preventing UAF from synchronous reentrancy</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-sync-reentry-uaf/</link>
      <pubDate>Tue, 21 Jul 2026 15:43:38 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-sync-reentry-uaf/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;We have seen several segfaults of this class already.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This PR targets single-thread free UAFs: &lt;a href=&#34;https://github.com/valkey-io/valkey/pull/4212&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/pull/4212&lt;/a&gt;
We also hit the same pattern in &lt;strong&gt;multithread RDMA crashes&lt;/strong&gt; and &lt;strong&gt;Valkey Over RDMA server UAF in tests&lt;/strong&gt;,
so we are trying to address it at the architecture level.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>UAF with multiple BLPOP waiters</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-uaf-multi-blpop/</link>
      <pubDate>Tue, 21 Jul 2026 11:15:35 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-uaf-multi-blpop/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;1. What is BLPOP? 
    &lt;div id=&#34;1-what-is-blpop&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#1-what-is-blpop&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;Ordinary &lt;code&gt;LPOP mylist&lt;/code&gt;: if the list is empty, return &lt;code&gt;(nil)&lt;/code&gt; immediately.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>RDB_OPCODE_SLOT_IMPORT short job_name causes server-side heap out-of-bounds read during startup RDB loading</title>
      <link>https://quanyeyang.github.io/valkey/security-rdb-slot-import-oob/</link>
      <pubDate>Sun, 19 Jul 2026 12:33:27 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/security-rdb-slot-import-oob/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/issues/4207&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/issues/4207&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A security-class issue — link above; worth trying to fix.&lt;/p&gt;
&lt;p&gt;Classic trust-boundary length-contract mismatch: the command path requires &lt;code&gt;job_name&lt;/code&gt; to be exactly 40 bytes,
but the RDB load path does not validate, so &lt;code&gt;memcpy(..., 40)&lt;/code&gt; OOB-reads from a short SDS.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Client-side caching: server reverse-index leak after disconnect (unbounded growth)</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-client-side-caching-index-leak/</link>
      <pubDate>Wed, 15 Jul 2026 22:08:11 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-client-side-caching-index-leak/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The core of Issue &lt;a href=&#34;https://github.com/valkey-io/valkey/issues/4143&#34; target=&#34;_blank&#34;&gt;#4143&lt;/a&gt; is that Client Side Caching (CSC) &lt;strong&gt;deliberately skips immediate cleanup&lt;/strong&gt; of the server-side reverse index when a client disconnects, which &lt;strong&gt;lets the inner tables grow without bound&lt;/strong&gt;.
Below we break it down as &lt;strong&gt;mechanism → memory layout → lifecycle → gap&lt;/strong&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Valkey Over RDMA: server UAF crash in tests</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-rdma-server-uaf/</link>
      <pubDate>Tue, 14 Jul 2026 21:46:50 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-rdma-server-uaf/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/issues/3345&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/issues/3345&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Main symptom: segfault on Ctrl+C — how do we fix it?&lt;/p&gt;
&lt;p&gt;Our PR:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/pull/3448&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/pull/3448&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To explain this UAF server crash clearly in interviews, we need a careful postmortem.
This is another Valkey Over RDMA series issue:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Multithread RDMA crash (lock-free IO queue model)</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-multithread-rdma-lockfree-io/</link>
      <pubDate>Tue, 14 Jul 2026 21:27:29 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-multithread-rdma-lockfree-io/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;If it&amp;rsquo;s broken, I&amp;rsquo;ll fix it!&lt;/p&gt;&lt;/blockquote&gt;


&lt;h1 class=&#34;relative group&#34;&gt;Reintroducing an interesting problem (background) 
    &lt;div id=&#34;reintroducing-an-interesting-problem-background&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#reintroducing-an-interesting-problem-background&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h1&gt;
&lt;p&gt;Description:
This write-up fixes &lt;strong&gt;RDMA crashes under multithreading&lt;/strong&gt;.
While we work on it, &lt;strong&gt;main is also refactoring the I/O model — we do not yet know if the new model still hits this&lt;/strong&gt;.
(Verify later.)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Valkey Over RDMA Internals</title>
      <link>https://quanyeyang.github.io/valkey/rdma-valkey-over-rdma-internals/</link>
      <pubDate>Mon, 13 Jul 2026 15:03:13 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/rdma-valkey-over-rdma-internals/</guid>
      <description>&lt;p&gt;&lt;strong&gt;2. RDMA basics&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How does communication actually work?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;TCP is a &lt;strong&gt;stream protocol&lt;/strong&gt; (byte stream); RDMA is &lt;strong&gt;message-oriented&lt;/strong&gt; (elements).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Raft Cluster valkey-cli Tooling Compatibility</title>
      <link>https://quanyeyang.github.io/valkey/feature-raft-cli-tooling/</link>
      <pubDate>Mon, 13 Jul 2026 14:53:53 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-raft-cli-tooling/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Also a very interesting topic — Valkey recently introduced Raft.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;This PR addresses the following: in a Raft cluster, &lt;strong&gt;the server-side execution model for topology-change commands has changed&lt;/strong&gt;,
but &lt;code&gt;valkey-cli --cluster fix&lt;/code&gt; still sends commands using the old gossip transaction model, so the two are incompatible.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Raft Cluster Support For Non-Voting Members</title>
      <link>https://quanyeyang.github.io/valkey/feature-raft-non-voting-members/</link>
      <pubDate>Sun, 12 Jul 2026 23:44:47 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-raft-non-voting-members/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Another interesting Raft topic: implement a new role — Learner.
The schedule was tight, and this is clearly &lt;strong&gt;more challenging than Pre-Vote&lt;/strong&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Raft Cluster Pre-Vote Protocol</title>
      <link>https://quanyeyang.github.io/valkey/feature-raft-cluster-pre-vote-protocol/</link>
      <pubDate>Sun, 12 Jul 2026 23:06:26 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-raft-cluster-pre-vote-protocol/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Written early in the pluggable Raft cluster-bus work — the design was still forming.
This is mainly a learning note while I tried to implement Raft Pre-Vote in Redis/Valkey Cluster V2.
It has since merged; this is also a retrospective.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How Are Event Notifications Produced?</title>
      <link>https://quanyeyang.github.io/valkey/rdma-how-event-notifications-work/</link>
      <pubDate>Thu, 09 Jul 2026 15:50:02 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/rdma-how-event-notifications-work/</guid>
      <description>&lt;p&gt;Look at an RDMA context:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-C&#34; data-lang=&#34;C&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RdmaContext&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;connection&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 上层连接结构体
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;long&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;long&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keepalive_te&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* RDMA has no transport layer keepalive */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ibv_pd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 保护域
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdma_event_channel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cm_channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ibv_comp_channel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;comp_channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// CQ的通知事件，用来触发POLLIN事件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ibv_cq&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cm&#34;&gt;/* TX */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;RdmaXfer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* remote transfer buffer address */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;uint32_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* remote transfer buffer key */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;uint32_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* remote transfer buffer length */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;uint32_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx_offset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* remote transfer buffer offset */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;uint32_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tx_ops&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* operations on remote transfer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cm&#34;&gt;/* RX */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;RdmaXfer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cm&#34;&gt;/* CMD 0 ~ VALKEY_RDMA_MAX_WQE for recv buffer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;     * VALKEY_RDMA_MAX_WQE ~ 2 * VALKEY_RDMA_MAX_WQE -1 for send buffer */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;ValkeyRdmaCmd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cmd_buf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ibv_mr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cmd_mr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;RdmaContext&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>RDMA Library Runtime Dynamic Loading (for client and benchmark)</title>
      <link>https://quanyeyang.github.io/valkey/feature-rdma-runtime-dynamic-loading/</link>
      <pubDate>Mon, 06 Jul 2026 16:56:17 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-rdma-runtime-dynamic-loading/</guid>
      <description>&lt;p&gt;Two PRs:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/pull/3072&#34; target=&#34;_blank&#34;&gt;Valkey main-repo change&lt;/a&gt;
&lt;a href=&#34;https://github.com/valkey-io/libvalkey/pull/284&#34; target=&#34;_blank&#34;&gt;libvalkey upstream&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We mainly cover dynamic loading of the two RDMA libraries (&lt;code&gt;librdmacm&lt;/code&gt;, &lt;code&gt;libibverbs&lt;/code&gt;) for &lt;strong&gt;client&lt;/strong&gt; and benchmark.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>32-bit Valkey builds: header include order and off_t ABI mismatch</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-valkey-32bit-header-order/</link>
      <pubDate>Sun, 05 Jul 2026 19:28:49 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-valkey-32bit-header-order/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This PR is memorable: it was our first PR to Valkey.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Static linking background also shows up in &lt;strong&gt;CSAPP Linker Lab&lt;/strong&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>valkey-benchmark RDMA lost-wakeup</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-benchmark-rdma-lost-wakeup/</link>
      <pubDate>Sun, 05 Jul 2026 19:24:12 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-benchmark-rdma-lost-wakeup/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/issues/3345#issuecomment-4084382404&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/issues/3345#issuecomment-4084382404&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Users hit GET hangs with the benchmark client? Initial analysis: lost wakeup.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Deleting code is cooler than adding code.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Raft-based cluster bus (Cluster V2)</title>
      <link>https://quanyeyang.github.io/valkey/feature-raft-cluster-bus-v2/</link>
      <pubDate>Thu, 02 Jul 2026 23:24:33 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-raft-cluster-bus-v2/</guid>
      <description>&lt;p&gt;Recently the Valkey community has been exploring a new feature: driving Cluster bus communication with the Raft protocol. I had just finished learning Raft and master–replica replication, and claimed an issue,
so I wanted to dig deeper and try to solve more problems in this area.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Valkey Over RDMA: Multithread Tests (New Test Framework)</title>
      <link>https://quanyeyang.github.io/valkey/feature-rdma-multithread-tests/</link>
      <pubDate>Mon, 29 Jun 2026 17:13:42 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/feature-rdma-multithread-tests/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;I treat this as a new feature: use the libvalkey client to simulate load, with multithread support.&lt;/p&gt;&lt;/blockquote&gt;


&lt;h2 class=&#34;relative group&#34;&gt;Test logic for this change 
    &lt;div id=&#34;test-logic-for-this-change&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#test-logic-for-this-change&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a new feature; we need a new PR.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2026-25243 Invalid Memory Access in Redis RESTORE Command May Lead to Remote Code Execution</title>
      <link>https://quanyeyang.github.io/valkey/security-cve-2026-25243-restore-rce/</link>
      <pubDate>Wed, 27 May 2026 23:17:00 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/security-cve-2026-25243-restore-rce/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;CVE-2026-25243 — Invalid Memory Access in Redis RESTORE Command May Lead to Remote Code Execution 
    &lt;div id=&#34;cve-2026-25243--invalid-memory-access-in-redis-restore-command-may-lead-to-remote-code-execution&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#cve-2026-25243--invalid-memory-access-in-redis-restore-command-may-lead-to-remote-code-execution&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h1&gt;
&lt;p&gt;The trigger is Redis’s &lt;code&gt;RESTORE&lt;/code&gt; command.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2026-27623 Pre-Authentication DOS from malformed RESP request</title>
      <link>https://quanyeyang.github.io/valkey/security-cve-2026-27623-resp-dos/</link>
      <pubDate>Tue, 26 May 2026 23:06:59 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/security-cve-2026-27623-resp-dos/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;CVE-2026-27623 — Pre-Authentication DOS from malformed RESP request 
    &lt;div id=&#34;cve-2026-27623--pre-authentication-dos-from-malformed-resp-request&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#cve-2026-27623--pre-authentication-dos-from-malformed-resp-request&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Valkey pre-auth DoS | RESP protocol state machine | CVSS 3.1: 7.5 HIGH | CWE-20 | no auth required&lt;/strong&gt; | &lt;a href=&#34;#reproduction-steps&#34;&gt;Reproduction steps&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Multithread RDMA crash</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-multithread-rdma-crash/</link>
      <pubDate>Sun, 17 May 2026 10:48:06 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-multithread-rdma-crash/</guid>
      <description>&lt;p&gt;Notes from trying to fix [CRASH] Does Valkey over RDMA not support I/O threads? #3112.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/valkey-io/valkey/issues/3112&#34; target=&#34;_blank&#34;&gt;https://github.com/valkey-io/valkey/issues/3112&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Summarizing the experimental workflow — longest campaign yet; over a month and still not merged.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Why multithreading causes issues (summary)</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-multithread/</link>
      <pubDate>Fri, 15 May 2026 22:11:18 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-multithread/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Multithread RDMA crash&lt;/strong&gt;
&lt;strong&gt;Multithread RDMA crash (lock-free IO queue model)&lt;/strong&gt;
Both issues relate to the RDMA notification model.
For socket/unix, &lt;code&gt;ConnectionType.update_state&lt;/code&gt; is NULL, so &lt;code&gt;connUpdateState&lt;/code&gt; is essentially a no-op.
For RDMA, &lt;code&gt;updateRdmaState&lt;/code&gt; calls straight into the data path:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Multithread RDB crash</title>
      <link>https://quanyeyang.github.io/valkey/bugfix-multithread-rdb-crash/</link>
      <pubDate>Fri, 15 May 2026 22:10:35 +0800</pubDate>
      <author>quanyemostima@gmail.com (quanye)</author>
      <guid>https://quanyeyang.github.io/valkey/bugfix-multithread-rdb-crash/</guid>
      <description>&lt;p&gt;This looks like a multithread-only issue — revisit later.
I hit this as a new Valkey problem while testing; worth trying first.
Reproduction sketch:
Build on &lt;code&gt;unstable&lt;/code&gt;, start a server without changing &lt;code&gt;valkey.conf&lt;/code&gt;; under load an RDB should appear by default.
Test on the main thread and see if it fails.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
