繁
返回 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。