mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	忽略部分MySQL 1213错误
This commit is contained in:
		@@ -90,9 +90,7 @@ func (this *MetricStatDAO) CreateStat(tx *dbs.Tx, hash string, clusterId int64,
 | 
				
			|||||||
			"value": value,
 | 
								"value": value,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		// 忽略 Error 1213: Deadlock found 错误
 | 
							if this.canIgnore(err) {
 | 
				
			||||||
		mysqlErr, ok := err.(*mysql.MySQLError)
 | 
					 | 
				
			||||||
		if ok && mysqlErr.Number == 1213 {
 | 
					 | 
				
			||||||
			return nil
 | 
								return nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -135,6 +133,9 @@ func (this *MetricStatDAO) DeleteNodeItemStats(tx *dbs.Tx, nodeId int64, serverI
 | 
				
			|||||||
			Attr("itemId", itemId).
 | 
								Attr("itemId", itemId).
 | 
				
			||||||
			Attr("time", time).
 | 
								Attr("time", time).
 | 
				
			||||||
			Delete()
 | 
								Delete()
 | 
				
			||||||
 | 
							if this.canIgnore(err) {
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -751,3 +752,18 @@ func (this *MetricStatDAO) mergeStats(stats []*MetricStat) (result []*MetricStat
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return result
 | 
						return result
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 检查错误是否可以忽略
 | 
				
			||||||
 | 
					func (this *MetricStatDAO) canIgnore(err error) bool {
 | 
				
			||||||
 | 
						if err == nil {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 忽略 Error 1213: Deadlock found 错误
 | 
				
			||||||
 | 
						mysqlErr, ok := err.(*mysql.MySQLError)
 | 
				
			||||||
 | 
						if ok && mysqlErr.Number == 1213 {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
 | 
						"github.com/go-sql-driver/mysql"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
@@ -55,7 +56,7 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// UpdateSum 更新统计数据
 | 
					// UpdateSum 更新统计数据
 | 
				
			||||||
func (this *MetricSumStatDAO) UpdateSum(tx *dbs.Tx, clusterId int64, nodeId int64, serverId int64, time string, itemId int64, version int32, count int64, total float32) error {
 | 
					func (this *MetricSumStatDAO) UpdateSum(tx *dbs.Tx, clusterId int64, nodeId int64, serverId int64, time string, itemId int64, version int32, count int64, total float32) error {
 | 
				
			||||||
	return this.Query(tx).
 | 
						err := this.Query(tx).
 | 
				
			||||||
		Table(this.partialTable(serverId)).
 | 
							Table(this.partialTable(serverId)).
 | 
				
			||||||
		InsertOrUpdateQuickly(maps.Map{
 | 
							InsertOrUpdateQuickly(maps.Map{
 | 
				
			||||||
			"clusterId":  clusterId,
 | 
								"clusterId":  clusterId,
 | 
				
			||||||
@@ -71,6 +72,10 @@ func (this *MetricSumStatDAO) UpdateSum(tx *dbs.Tx, clusterId int64, nodeId int6
 | 
				
			|||||||
			"count": count,
 | 
								"count": count,
 | 
				
			||||||
			"total": total,
 | 
								"total": total,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
						if this.canIgnore(err) {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// FindNodeServerSum 查找某个服务在某个节点上的统计数据
 | 
					// FindNodeServerSum 查找某个服务在某个节点上的统计数据
 | 
				
			||||||
@@ -277,3 +282,18 @@ func (this *MetricSumStatDAO) runBatch(f func(table string, locker *sync.Mutex)
 | 
				
			|||||||
	wg.Wait()
 | 
						wg.Wait()
 | 
				
			||||||
	return resultErr
 | 
						return resultErr
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 检查错误是否可以忽略
 | 
				
			||||||
 | 
					func (this *MetricSumStatDAO) canIgnore(err error) bool {
 | 
				
			||||||
 | 
						if err == nil {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 忽略 Error 1213: Deadlock found 错误
 | 
				
			||||||
 | 
						mysqlErr, ok := err.(*mysql.MySQLError)
 | 
				
			||||||
 | 
						if ok && mysqlErr.Number == 1213 {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user