mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	修复多个日志数据库节点分布不平均的问题
This commit is contained in:
		@@ -9,6 +9,7 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
	"github.com/iwind/TeaGo/lists"
 | 
						"github.com/iwind/TeaGo/lists"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/rands"
 | 
				
			||||||
	timeutil "github.com/iwind/TeaGo/utils/time"
 | 
						timeutil "github.com/iwind/TeaGo/utils/time"
 | 
				
			||||||
	"hash/crc32"
 | 
						"hash/crc32"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
@@ -78,18 +79,30 @@ func AllAccessLogDBs() []*dbs.DB {
 | 
				
			|||||||
// 获取获取DAO
 | 
					// 获取获取DAO
 | 
				
			||||||
func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) {
 | 
					func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) {
 | 
				
			||||||
	accessLogLocker.RLock()
 | 
						accessLogLocker.RLock()
 | 
				
			||||||
 | 
						defer accessLogLocker.RUnlock()
 | 
				
			||||||
	if len(httpAccessLogDAOMapping) == 0 {
 | 
						if len(httpAccessLogDAOMapping) == 0 {
 | 
				
			||||||
		dao = nil
 | 
							dao = nil
 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		for _, d := range httpAccessLogDAOMapping {
 | 
					 | 
				
			||||||
			dao = d
 | 
					 | 
				
			||||||
			break
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	accessLogLocker.RUnlock()
 | 
					 | 
				
			||||||
		return
 | 
							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) {
 | 
					func randomNSAccessLogDAO() (dao *NSAccessLogDAOWrapper) {
 | 
				
			||||||
	accessLogLocker.RLock()
 | 
						accessLogLocker.RLock()
 | 
				
			||||||
	if len(nsAccessLogDAOMapping) == 0 {
 | 
						if len(nsAccessLogDAOMapping) == 0 {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user