修复访问日志采样率可能会被放大的Bug

This commit is contained in:
GoEdgeLab
2022-10-20 16:12:35 +08:00
parent 8610bd5c34
commit 0dc5478bc6

View File

@@ -51,6 +51,10 @@ var (
accessLogRowsPerTable int64 = 500_000 // 自动分表的单表最大值 accessLogRowsPerTable int64 = 500_000 // 自动分表的单表最大值
) )
func AccessLogQueuePercent() int {
return accessLogQueuePercent
}
type accessLogTableQuery struct { type accessLogTableQuery struct {
daoWrapper *HTTPAccessLogDAOWrapper daoWrapper *HTTPAccessLogDAOWrapper
name string name string
@@ -131,13 +135,13 @@ func (this *HTTPAccessLogDAO) CreateHTTPAccessLogs(tx *dbs.Tx, accessLogs []*pb.
// 写入队列 // 写入队列
var queue = accessLogQueue // 这样写非常重要,防止在写入过程中队列有切换 var queue = accessLogQueue // 这样写非常重要,防止在写入过程中队列有切换
for _, accessLog := range accessLogs { for _, accessLog := range accessLogs {
if accessLog.FirewallPolicyId == 0 { // 如果是WAF记录则采取采样率 if accessLog.FirewallPolicyId == 0 { // 如果是WAF记录则采取采样率
// 采样率 // 采样率
if accessLogQueuePercent <= 0 { if accessLogQueuePercent <= 0 {
return nil return nil
} }
if accessLogQueuePercent < 100 && rands.Int(1, 100) > accessLogQueuePercent { if accessLogQueuePercent < 100 && rands.Int(1, 100) > accessLogQueuePercent {
return nil continue
} }
} }