简
返回 Open Source

Apache ShenYu

Open-source contributions to Apache ShenYu

JavaGatewayProxyPlugin 23 Merged PRs

Merged PRs

fix(httpclient): handle missing upstream list during failover

在 failover 重試前檢查最新 upstream 列表,快取項目被刪除時傳回既有的 503 耗盡回應,避免空指標異常變成 500,並補充實際快取移除情況的迴歸測試。

fix(ai): synchronize routing context after request path rewrite

讓 AI 請求路徑重寫同步更新 ShenyuContext,避免仍向舊路徑轉發,同時保留已有 realUrl 轉換及顯式 REWRITE_URI 的優先次序。

fix(mqtt): fix duplicate startup and resource leaks on config updates

循序處理 MQTT 設定更新,等效設定重用現有監聽器,設定變更時安全重啟,並補齊啟動失敗清理、冪等關閉及並行更新的測試。

fix(common): restore eager task queue offer policy

讓兩種生產任務佇列顯式呼叫 TaskQueue 的 eager offer 策略,在工作執行緒繁忙且未達上限時擴容,同時保留原有入列及記憶體檢查。

fix(mqtt): preserve binary payloads in MQTT retained messages

以原始位元組儲存及重播 MQTT retained payload,避免字串解碼破壞二進制訊息,並涵蓋 ByteBuf 切片、引用生命週期及空訊息刪除。

fix(common): wake producers after memory limit changes and reset

在記憶體限額變更及使用量重設時,持鎖喚醒等待預算的生產者,修正擴容或縮容後 clear 仍阻塞的問題,並驗證只放行符合預算的請求。

fix(tcp): fix ignored proxy selector port and property updates

補齊 TCP selector 連接埠及屬性更新的提交後通知與監聽器替換,保留首次建立的 single-flight 機制,並處理同連接埠重啟失敗復原及替換、刪除之間的同步。

fix(admin): avoid double-prefixing cache keys in HTTP sync recovery

在 HTTP 同步復原中直接重用已帶 namespace 的完整快取 key,避免重複前綴導致空指標或跨命名空間讀取,並以生產格式的快取資料補充迴歸測試。

fix(etcd): prevent watcher leaks in selectInstances

移除 etcd 實例查詢中未保留控制代碼的持久 watcher 及未使用快取,繼續直接查詢最新實例,保留顯式訂閱及其清理行為。

fix(zookeeper): align instance registration and discovery paths

統一 ZooKeeper 實例註冊、查詢及監聽路徑,補齊原生實例 URL 與 Admin 更新、全量同步鏈路,並驗證應用程式隔離及 namespace 保留。

fix(cache): release joined response buffer on cache misses

在快取未命中回應的位元組複製後釋放合併的 DataBuffer,避免池化 Netty 緩衝區洩漏,並驗證單段、多段及額外引用情況的釋放次數與回應內容。

fix(ai): prevent prompt configuration leaking across requests

將規則層級 AI Prompt 設定套用到新的設定物件,避免污染共享外掛設定或影響後續請求,保留規則欄位整體替換的既有語義。

fix(mcp): correctly merge fixed and dynamic query parameters

修正 MCP 請求中固定與動態 query 參數的拼接及重複判斷,保留固定參數優先及動態值編碼,並驗證實際請求 URI 與上下文路徑。

fix(common): prevent fallback loops with encoded query parameters

使用原始 query 比較 fallback 目標,保留百分號編碼,避免編碼參數繞過同目標保護或將不同目標誤判為相同,涵蓋重新導向及內部轉發兩條路徑。

fix(ai): preserve JSON array bodies in request transformer

直接驗證並保留 AI 請求轉換器產生的 JSON 文字,避免陣列變成 null 或巢狀值類型被改寫,同時保留物件、陣列及文字格式。

fix(httpclient): stop failover retrying the same failed upstream when…

按 scheme、host 及有效連接埠識別失敗 upstream,正確處理省略預設連接埠的地址,避免 failover 反覆選擇同一失敗節點,並保留原有重試及請求主體重播邏輯。

refactor(admin): remove unused deprecated registration lock subsystem

清理已無倉庫內生產消費者的舊註冊鎖類型、Bean 及相關測試,保留現有 context-path 加鎖、叢集選主及資料庫機制,並說明公開 API 的兼容性影響。

fix(dubbo): preserve registry address when rewriting namespace

使用 Dubbo URL 模型替換 Registry 地址中的 namespace 參數,保留其餘地址組件與參數,並補充普通及 upstream Reference 路徑的迴歸測試,確保原始設定不變。

fix(discovery): remove stale gateway cache on upstream deletion

補齊 selector 級 discovery upstream 刪除的插件清理鏈路,透過 HTTP 快照比較識別消失或改名的記錄,並處理 TCP 身份映射及 Admin 批次刪除檢查。

fix(ci): handle k3s download failures and missing kubeconfig in install retries

讓 k3s 下載失敗正確進入重試,並以非空 kubeconfig 作為安裝成功條件,補充離線測試涵蓋下載失敗、設定檔缺失及空檔案等情況。

fix: update ZooKeeper instance cache when the last child is removed

讓 ZooKeeper Watcher 將空子節點列表也寫入實例快取,避免最後一個實例刪除後仍傳回舊資料,並覆蓋實例數量 1 → 0 → 1 的狀態變化。

fix: prevent duplicate TCP bootstrap server creation

透過按 selector 的 single-flight 建立機制,避免並行同步時重複啟動 TCP bootstrap server,並補全失敗回滾與冪等關閉處理。

Fix stale proxy selector data after empty HTTP refresh.

修正 HTTP 全量同步收到空快照後舊 proxy selector 執行階段資料未有清理的問題,並安全關閉快取的 TCP bootstrap servers。