固化七月迭代审计治理进展以隔离线上热修
Constraint: 切换 main 前必须保存当前七月分支全部项目进展,套餐生效提案仅属于 Iteration/7-11。 Rejected: 将七月套餐修复直接移植到 main | 两个分支的可靠投递架构不同。 Confidence: medium Scope-risk: broad Directive: 不得将本提交整体 cherry-pick 到 main;main 套餐热修必须基于其纯 Asynq 代码独立实施。 Tested: git diff --check;openspec validate fix-package-activation-starvation --strict。 Not-tested: 按用户要求未运行自动化测试;go build ./... 因当前审计改造中的 Enterprise 模型字面量和 role.recordFailure 参数类型错误未通过。
This commit is contained in:
33
pkg/auditfailure/observer.go
Normal file
33
pkg/auditfailure/observer.go
Normal file
@@ -0,0 +1,33 @@
|
||||
// Package auditfailure 提供失败审计二次写入故障的最小进程内观测。
|
||||
package auditfailure
|
||||
|
||||
import (
|
||||
"sync/atomic"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/pkg/logger"
|
||||
)
|
||||
|
||||
var secondaryWriteFailures atomic.Uint64
|
||||
|
||||
// RecordSecondaryWriteFailure 累计失败审计二次写入故障并记录 critical 安全日志。
|
||||
func RecordSecondaryWriteFailure(action, resourceKey, requestID, correlationID, originalErrorCode string, err error) {
|
||||
count := secondaryWriteFailures.Add(1)
|
||||
logger.GetAppLogger().Error(
|
||||
"失败或拒绝审计二次写入失败",
|
||||
zap.String("severity", "critical"),
|
||||
zap.String("action", action),
|
||||
zap.String("resource_key", resourceKey),
|
||||
zap.String("request_id", requestID),
|
||||
zap.String("correlation_id", correlationID),
|
||||
zap.String("original_error_code", originalErrorCode),
|
||||
zap.Uint64("secondary_write_failure_count", count),
|
||||
zap.Error(err),
|
||||
)
|
||||
}
|
||||
|
||||
// SecondaryWriteFailureCount 返回当前进程累计的失败审计二次写入故障数。
|
||||
func SecondaryWriteFailureCount() uint64 {
|
||||
return secondaryWriteFailures.Load()
|
||||
}
|
||||
Reference in New Issue
Block a user