fix: ensure error logs are output for OnlyLog type and unknown errors#411
fix: ensure error logs are output for OnlyLog type and unknown errors#411qiuzhiqian merged 1 commit intomasterfrom
Conversation
- Add indicator logging in CheckPkgSystemError when parsePkgSystemError returns error - Return ErrorUnknown JobError instead of silently dropping error when parsePkgSystemError returns nil - Move log output before JobId check in handleJobProgressInfo to ensure OnlyLog messages are not skipped Bug: https://pms.uniontech.com/bug-view-352601.html
|
CLA Assistant Lite bot: |
deepin pr auto review这段代码主要对 APT 包管理系统的错误处理逻辑和任务进度信息的处理流程进行了优化。下面我将从语法逻辑、代码质量、代码性能和代码安全四个方面进行详细审查并提出改进意见。 1. 语法逻辑审查修改点分析:
改进意见:
2. 代码质量审查改进点:
改进意见:
3. 代码性能审查潜在问题:
4. 代码安全审查潜在问题:
综合改进建议以下是优化后的代码示例: func CheckPkgSystemError(lock bool, indicator system.Indicator) error {
if err == nil {
return nil
}
if systemErr := parsePkgSystemError(outBuf.Bytes(), errBuf.Bytes()); systemErr != nil {
if jobErr, ok := systemErr.(*system.JobError); ok {
logError(indicator, "=== CheckPkg cmd failed: [%s] %s ===\n", jobErr.ErrType, jobErr.ErrDetail)
} else {
logError(indicator, "=== CheckPkg cmd failed: %s ===\n", errBuf.String())
}
return systemErr
}
// 如果 parsePkgSystemError 无法解析错误,创建一个通用错误
var detail strings.Builder
detail.WriteString(outBuf.String())
detail.WriteString(errBuf.String())
jobErr := &system.JobError{
ErrType: system.ErrorUnknown,
ErrDetail: sanitizeLog(detail.String()),
}
logError(indicator, "=== CheckPkg cmd failed: [%s] %s ===\n", jobErr.ErrType, jobErr.ErrDetail)
return jobErr
}
func logError(indicator system.Indicator, format string, args ...interface{}) {
if indicator != nil {
indicator(system.JobProgressInfo{
OnlyLog: true,
OriginalLog: fmt.Sprintf(format, args...),
})
}
}
func sanitizeLog(s string) string {
return strings.Map(func(r rune) rune {
if r < ' ' && r != '\n' && r != '\t' {
return ' '
}
return r
}, s)
}总结
这些改进将使代码更健壮、更安全,同时保持良好的可读性和可维护性。 |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: qiuzhiqian, zhaohuiw42 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Bug: https://pms.uniontech.com/bug-view-352601.html