Pull Request已成功合入, 合并人@openeuler-ci-bot
(感谢 guoyang 的贡献)变更摘要
本 PR 修复 Issue #1089:此前不同入口对 log name 使用不同校验逻辑(部分入口复用路径字符校验,允许 /、.、- 等字符;部分入口仅接受字母、数字、下划线),行为不一致。本次修改将 log name 校验收敛到公共的 Validator::ValidateLogName(非空字符规范统一为 ^[a-zA-Z0-9_]+$,不扩充 -),并让 KVClientConfig::Builder、全局 flag log_filename、日志环境变量及 access log 配置全部复用该实现,同时删除 Logging 与 Builder 中的重复定义,补齐配置说明、API 文档和单元测试。可选配置(如 access log 名)仍保留空字符串表示未配置的既有语义。
主要改动
- 新增统一校验入口:在
src/datasystem/common/util/validator.h中新增静态方法Validator::ValidateLogName,使用正则^[a-zA-Z0-9_]+$校验 log 文件基础名,空字符串视为非法。 - 删除重复实现并复用公共校验:
src/datasystem/common/log/logging.cpp、logging.h删除Logging::ValidateLogName定义与声明,logging.cpp的环境变量覆盖逻辑及access_recorder.cpp的AccessRecorderManager::ResetWriteLogger改用Validator::ValidateLogName,并移除两处@re2依赖。 - 统一 flag 与 Builder 校验:
common_flags_validate.cpp新增ValidateOptionalLogName(空值放行、非空值按新规范校验),log_filename的 validator 由Validator::ValidateEligibleChar切换为该函数;kv_client_config.cpp删除本地 RE2 校验,新增ValidateLogNameArg统一处理log_filename(不允许为空)与client_access_log_filename(允许为空)。 - 更新对外接口文档与部署配置说明:
include/datasystem/utils/kv_client_config.h中LogName、AccessLogName的 API 注释、docs/source_zh_cn/api_reference/api/cpp/KVClientConfig.rst、cli/deploy/conf/coordinator_config.json、worker_config.json及k8s/helm_chart/datasystem/values.yaml均改为"非空时仅允许字母、数字和下划线"的说明。 - 补充单元测试并适配既有用例:在
tests/ut/common/util/validator_test.cpp、tests/ut/common/flags/flags_test.cpp(覆盖空字符串、字母、数字、下划线、连字符、点、斜杠和空格等场景)及tests/ut/common/log/logging_test.cpp中新增/调整用例;tests/perf/zmq/zmq_perf_agt_exe.cpp将 log name 中的分隔符由.调整为_(%s_%d)以符合新规范。


【OpenYuanRong PROCESS 部署 Actor 冒烟 · PR验证报告】
✅ 总结论:通过
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PR 信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
仓库:yuanrong-datasystem
PR 编号:#2124
分支:master
提交:04bb99568cb2610bd75d7bd2f399b5921facf2e0
作者:young_0105@163.com
操作:merge
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
分语言汇总
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
语言 总用例 成功 失败 跳过 通过率
C++ 43 43 0 0 100.0%
Python 90 90 0 0 100.0%
Java 26 26 0 0 100.0%
合计 159 159 0 0 100.0%
Jenkins 构建: http://jenkins.openyuanrong.com/job/openyuanrong/job/OpenYR_Actor_Smoke_Process_X86/604/


这是什么类型的PR?
/kind fix
1. 问题背景 / 问题现象
Issue #1089 中,不同入口对 log name 使用了不同的校验逻辑:部分入口复用了路径字符校验,导致
/、.、-等字符可以通过;另一些入口只接受字母、数字和下划线。相同配置在 Builder、gflag 和环境变量入口的行为不一致。本问题为 pre-existing。修复目标是统一所有 log name 的非空字符规范为
^[a-zA-Z0-9_]+$,不扩充-;可选配置仍保留空字符串表示未配置的既有语义。2. 修改方案 / 解决方案
将 log name 校验收敛到公共
Validator::ValidateLogName,并让 Builder、全局 flag、日志环境变量及 access log 配置复用该实现。删除Logging和 Builder 中的重复定义,补齐配置说明、API 文档和单元测试。classDiagram class Validator { ValidateLogName } class KVClientConfigBuilder class CommonFlags class Logging class AccessRecorder KVClientConfigBuilder --> Validator CommonFlags --> Validator Logging --> Validator AccessRecorder --> Validator修改文件清单:
src/datasystem/common/util/validator.hsrc/datasystem/common/log/*src/datasystem/common/flags/*include/datasystem/utils/kv_client_config.hcli/deploy/conf/*、k8s/helm_chart/datasystem/values.yamldocs/source_zh_cn/*tests/ut/common/{util,flags,log}/*tests/perf/zmq/zmq_perf_agt_exe.cpp3. 验证方案
bash build.sh -j 30 -X off -t build检查 CMake 构建链路。log_filenameflag。PR HEAD 已 rebase 到验证时的最新upstream/master,变更仅 1 个提交。4. 验证结果
validator_testflags_testgit diff --checkprotoc-gen-mcpack链接阶段因 Snappy 符号未解析失败CMake 失败发生在第三方依赖链接阶段,未进入本 PR 修改源码的编译;因此未将该项标记为通过。
6. 自检清单
构建
正确性
安全
对外接口变更
Fixes #1089