diff --git a/internal/db/models/db_node_initializer.go b/internal/db/models/db_node_initializer.go index ec75df4e..f96f1bdd 100644 --- a/internal/db/models/db_node_initializer.go +++ b/internal/db/models/db_node_initializer.go @@ -9,6 +9,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" + "github.com/iwind/TeaGo/rands" timeutil "github.com/iwind/TeaGo/utils/time" "hash/crc32" "regexp" @@ -78,16 +79,28 @@ func AllAccessLogDBs() []*dbs.DB { // 获取获取DAO func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) { accessLogLocker.RLock() + defer accessLogLocker.RUnlock() if len(httpAccessLogDAOMapping) == 0 { dao = nil - } else { - for _, d := range httpAccessLogDAOMapping { - dao = d - break - } + return } - accessLogLocker.RUnlock() - return + + var daoList = []*HTTPAccessLogDAOWrapper{} + + for _, d := range httpAccessLogDAOMapping { + daoList = append(daoList, d) + } + + var l = len(daoList) + if l == 0 { + return + } + + if l == 1 { + return daoList[0] + } + + return daoList[rands.Int(0, len(daoList)-1)] } func randomNSAccessLogDAO() (dao *NSAccessLogDAOWrapper) { diff --git a/internal/db/models/http_access_log_dao.go b/internal/db/models/http_access_log_dao.go index 79d948a3..6e16e16f 100644 --- a/internal/db/models/http_access_log_dao.go +++ b/internal/db/models/http_access_log_dao.go @@ -40,7 +40,7 @@ var SharedHTTPAccessLogDAO *HTTPAccessLogDAO var ( oldAccessLogQueue = make(chan *pb.HTTPAccessLog) accessLogQueue = make(chan *pb.HTTPAccessLog, 10_000) - accessLogQueueMaxLength = 100_000 //队列最大长度 + accessLogQueueMaxLength = 100_000 // 队列最大长度 accessLogQueuePercent = 100 // 0-100 accessLogCountPerSecond = 10_000 // 每秒钟写入条数,0 表示不限制 accessLogPerTx = 100 // 单事务写入条数