7
"github.com/cubefs/cubefs/util/log"
8
"golang.org/x/time/rate"
12
defaultMarkDeleteLimitRate = rate.Inf
13
defaultMarkDeleteLimitBurst = 512
14
defaultIOLimitBurst = 512
15
UpdateNodeInfoTicket = 1 * time.Minute
17
RepairTimeOut = time.Hour * 24
18
MaxRepairErrCnt = 1000
21
var nodeInfoStopC = make(chan struct{})
23
func (m *DataNode) startUpdateNodeInfo() {
24
ticker := time.NewTicker(UpdateNodeInfoTicket)
29
log.LogInfo("datanode nodeinfo goroutine stopped")
37
func (m *DataNode) stopUpdateNodeInfo() {
38
nodeInfoStopC <- struct{}{}
41
func (m *DataNode) updateNodeInfo() {
42
clusterInfo, err := MasterClient.AdminAPI().GetClusterInfo()
44
log.LogErrorf("[updateDataNodeInfo] %s", err.Error())
48
setLimiter(deleteLimiteRater, clusterInfo.DataNodeDeleteLimitRate)
50
setDoExtentRepair(int(clusterInfo.DataNodeAutoRepairLimitRate))
52
atomic.StoreUint64(&m.dpMaxRepairErrCnt, clusterInfo.DpMaxRepairErrCnt)
54
log.LogInfof("updateNodeInfo from master:"+
55
"deleteLimite(%v), autoRepairLimit(%v), dpMaxRepairErrCnt(%v)",
56
clusterInfo.DataNodeDeleteLimitRate, clusterInfo.DataNodeAutoRepairLimitRate,
57
clusterInfo.DpMaxRepairErrCnt)
60
func (m *DataNode) GetDpMaxRepairErrCnt() uint64 {
61
dpMaxRepairErrCnt := atomic.LoadUint64(&m.dpMaxRepairErrCnt)
62
if dpMaxRepairErrCnt == 0 {
63
return MaxRepairErrCnt
65
return dpMaxRepairErrCnt