Skip to content

fix(backup): 使用ConvertProtoBackupStrategyToDriver替代String()转换备份策略 #2779#3283

Open
LordofAvernus wants to merge 1 commit intomainfrom
sqle/feat-2779
Open

fix(backup): 使用ConvertProtoBackupStrategyToDriver替代String()转换备份策略 #2779#3283
LordofAvernus wants to merge 1 commit intomainfrom
sqle/feat-2779

Conversation

@LordofAvernus
Copy link
Copy Markdown
Collaborator

@LordofAvernus LordofAvernus commented Apr 29, 2026

User description

Summary

  • 修复 gRPC 服务端 Backup 方法中备份策略转换使用 String() 导致的策略值不匹配问题,改用 ConvertProtoBackupStrategyToDriver 进行正确的 proto 到 driver 层策略转换

Fixes https://github.com/actiontech/sqle-ee/issues/2779


Description

  • 修正备份策略转换逻辑

  • 使用 ConvertProtoBackupStrategyToDriver 函数进行转换

  • 确保 proto 枚举值正确映射到 driver 字符串


Diagram Walkthrough

flowchart LR
  A["传入 proto 备份策略"] -- "调用转换函数" --> B["转换为 driver 格式"]
  B -- "用于备份操作" --> C["备份请求正确处理"]
Loading

File Walkthrough

Relevant files
Bug fix
driver_grpc_server.go
使用转换函数替换原有备份策略转换方式                                                                             

sqle/driver/v2/driver_grpc_server.go

  • 替换 req.BackupStrategy.String() 为
    ConvertProtoBackupStrategyToDriver(req.BackupStrategy)
  • 保障备份策略转换正确性
+1/-1     

…() for backup strategy

The gRPC server's Backup() method was using req.BackupStrategy.String()
which returns the proto enum name "OriginalRow" (PascalCase), but the
plugin's Backup() expects "original_row" (snake_case). This caused
"不支持的备份类型: OriginalRow, 未执行备份" errors when executing
backup for DELETE/UPDATE statements on TiDB data sources.

Fix: use the existing ConvertProtoBackupStrategyToDriver() function
which correctly maps proto enum values to driver string constants.

Fixes: BUG-004
@github-actions
Copy link
Copy Markdown

PR Reviewer Guide 🔍

🎫 Ticket compliance analysis 🔶

2779 - Partially compliant

Compliant requirements:

  • 修正备份策略转换逻辑:使用 ConvertProtoBackupStrategyToDriver 进行转换

Non-compliant requirements:

Requires further human verification:

⏱️ Estimated effort to review: 1 🔵⚪⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ No major issues detected

@github-actions
Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
添加 nil 检查

建议在调用 ConvertProtoBackupStrategyToDriver(req.BackupStrategy) 前检查 req.BackupStrategy
是否为 nil,以防止在转换过程中出现空指针异常导致 panic。确保在进入核心逻辑之前进行必要的 nil 检查是保证系统稳定性的关键步骤。

sqle/driver/v2/driver_grpc_server.go [118]

+if req.BackupStrategy == nil {
+    return &protoV2.BackupRes{}, errors.New("BackupStrategy cannot be nil")
+}
 BackupStrategy: ConvertProtoBackupStrategyToDriver(req.BackupStrategy),
Suggestion importance[1-10]: 6

__

Why: The suggestion adds a nil check for req.BackupStrategy before calling ConvertProtoBackupStrategyToDriver, which can prevent a potential runtime panic. However, it's a defensive improvement with moderate impact if nil values are unlikely or already handled.

Low

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.

1 participant