專案

開源ioredis 上游修正

後註冊的自訂指令在自動批次裡失效;修正並補測試後由官方合併

Redis 官方組織的 Node.js client。重現問題、修正、補測試,由維護者審查後合併。

原始畫面

GitHub 上 redis/ioredis 的 PR #2180 頁面,狀態為 Merged
1 GitHub 上的 PR #2180:狀態 Merged,說明裡寫明問題、修法與驗證
PR #2180 的變更檔案頁,顯示自動批次的程式碼差異
2 變更的檔案:自動批次的實作,以及單元、功能與 Cluster 測試
合併進上游主線的 commit 7479cab 頁面
3 合併進上游主線的 commit 7479cab,檢查全數通過
成果
PR #2180 已由官方合併;新增 6 項回歸測試
角色
個人貢獻:重現錯誤、修正、回歸測試與 PR
狀態
PR #2180 已合併
技術
TypeScript · Node.js · Redis · Redis Cluster

問題 後註冊的自訂指令,在自動批次裡找不到

同一輪事件迴圈裡,前面的指令先建立了自動批次;之後才註冊的自訂指令,批次裡找不到。例如限流套件加的指令,呼叫會直接失敗。

回呼又已先排進去,後面整批回應可能錯位或報錯。對應 issue #1931。

貢獻範圍 重現、修正、補測試到送出 PR

個人貢獻:重現錯誤、修正、補測試到送出 PR。以 Codex 協助開發、CodeRabbit 審查,PR 內都有寫明。

屬於對既有開源套件的貢獻:修補由上游維護者審查後合併。

修法 只改動態指令的取得與回呼註冊順序

自訂與後加入的指令,改從當下的 client 取得,再交給既有的批次執行。結果回呼改成指令成功入列後才註冊。

一般內建指令維持原路徑,只改動態指令。公開 API、相依套件與排除規則都沒改。

驗證 上游測試 2,209 項通過、0 失敗;新增 6 項回歸測試

修之前先重現兩個錯誤:指令找不到、回呼與結果錯位。

  • 非 Cluster 測試:2,209 項通過、0 失敗(455 項 pending,不計入通過)。
  • 真實六節點 Redis Cluster:62 項通過、0 失敗(4 項 pending)。
  • 新增回歸測試 6 項;變更 4 個檔案,+255/−7 行。
  • 驗證環境:Node.js 24.19.0、Redis 7.4.11(Linux)。PR 寫明只驗過這一組版本。

現況 已合併進上游主線

已合併進上游主線。截至 2026-09-24 還沒收進正式發行版;當時最新發行版是 v6.0.0。

證據 PR、issue 與上游 commit