Skip to content

<fix>[loadbalancer]: reject 'disable' in httpCompressAlgos on create#3343

Open
zstack-robot-2 wants to merge 2 commits into5.5.6from
sync/ye.zou/fix/ZSTAC-81706
Open

<fix>[loadbalancer]: reject 'disable' in httpCompressAlgos on create#3343
zstack-robot-2 wants to merge 2 commits into5.5.6from
sync/ye.zou/fix/ZSTAC-81706

Conversation

@zstack-robot-2
Copy link
Collaborator

Resolves: ZSTAC-81706\n\nReject httpCompressAlgos containing 'disable' value when creating a load balancer listener via API.

sync from gitlab !9172

Resolves: ZSTAC-81706

Change-Id: Ifa1e72cd1a956916298f63375133d7518b41069d
@coderabbitai
Copy link

coderabbitai bot commented Feb 13, 2026

经过

在负载均衡监听器API验证中新增守卫逻辑,拒绝在创建操作中使用禁用压缩算法参数,允许仅在更新操作中使用。

更改

内聚类 / 文件 摘要
HTTP压缩验证
plugin/loadBalancer/src/main/java/org/zstack/network/service/lb/LoadBalancerApiInterceptor.java
在APICreateLoadBalancerListenerMsg验证中增加检查逻辑,禁止在创建监听器时使用DisableLbSupportHttpCompressAlgos参数,抛出API消息拦截异常。此检查在现有的禁用算法处理分支之前执行,确保"禁用"操作仅在修改现有监听器时有效。

估算代码审查工作量

🎯 1 (简单) | ⏱️ ~5 分钟

诗歌

🐰 一只小兔来检查,
创建时要拒绝它,
压缩禁用需谨慎,
修改时才放行它,
逻辑严密又贴心!

🚥 Pre-merge checks | ✅ 3 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed 标题遵循了 [scope]: 格式([loadbalancer]: reject 'disable' in httpCompressAlgos on create),长度为68个字符,符合72字符的要求,准确反映了变更内容。
Description check ✅ Passed 描述说明了拉取请求的目的:拒绝在通过API创建负载均衡监听器时,httpCompressAlgos字段中包含'disable'值的请求,与变更集相关。
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into 5.5.6

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch sync/ye.zou/fix/ZSTAC-81706

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
plugin/loadBalancer/src/main/java/org/zstack/network/service/lb/LoadBalancerApiInterceptor.java (2)

1127-1141: 第 1133 行的条件判断现在是冗余的

在第 1127-1131 行添加了对 'disable' 的检查并抛出异常后,代码执行到第 1133 行时,httpCompressAlgos 已经不可能包含 'disable'。因此 if (!msg.getHttpCompressAlgos().contains(DisableLbSupportHttpCompressAlgos)) 条件永远为 true,可以移除这个条件判断。

♻️ 建议的修改
             if (msg.getHttpCompressAlgos().contains(DisableLbSupportHttpCompressAlgos)) {
                 throw new ApiMessageInterceptionException(
                         argerr(ORG_ZSTACK_NETWORK_SERVICE_LB_10095, "could not create the loadbalancer listener with httpCompressAlgos containing 'disable', " +
                                 "'disable' is only valid when changing an existing listener to remove compression"));
             }

-            if (!msg.getHttpCompressAlgos().contains(DisableLbSupportHttpCompressAlgos)) {
-                insertTagIfNotExisting(
-                        msg, LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS,
-                        LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS.instantiateTag(
-                                map(e(LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS_TOKEN, String.join(" ", msg.getHttpCompressAlgos())))
-                        )
-                );
-            }
+            insertTagIfNotExisting(
+                    msg, LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS,
+                    LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS.instantiateTag(
+                            map(e(LoadBalancerSystemTags.HTTP_COMPRESS_ALGOS_TOKEN, String.join(" ", msg.getHttpCompressAlgos())))
+                    )
+            );
         }

1128-1130: 错误码重复使用

第 1129 行使用了 ORG_ZSTACK_NETWORK_SERVICE_LB_10095,但该错误码在第 1124 行已被用于 "不支持的压缩算法" 这一不同的错误场景。不同的错误场景应使用不同的错误码,以便于问题定位和排查。


Comment @coderabbitai help to get the list of available commands and usage tips.

Resolves: ZSTAC-81706

Change-Id: Ib0a956059a79b4b73cb7b6b6b4e4f498488565ae
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants