MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / InsertStat

Method InsertStat

internal/metrics/task_kv.go:107–188  ·  view source on GitHub ↗
(stat *Stat)

Source from the content-addressed store, hash-verified

105}
106
107func (this *KVTask) InsertStat(stat *Stat) error {
108 if this.isStopped {
109 return nil
110 }
111 if stat == nil {
112 return nil
113 }
114
115 var version = this.itemConfig.Version
116
117 this.serverIdMapLocker.Lock()
118 this.serverTimeMap[types.String(stat.ServerId)+"_"+stat.Time] = zero.New()
119 this.serverIdMapLocker.Unlock()
120
121 if len(stat.Hash) == 0 {
122 stat.Hash = stat.UniqueKey(version, this.itemConfig.Id)
123 }
124
125 var isNew bool
126 var newValue = stat.Value
127
128 // insert or update
129 {
130 var statKey = stat.FullKey(version, this.itemConfig.Id)
131 oldStat, err := this.itemsTable.Get(statKey)
132 var oldValue int64
133 if err != nil {
134 if !kvstore.IsNotFound(err) {
135 return err
136 }
137 isNew = true
138 } else {
139 oldValue = oldStat.Value
140
141 // delete old value from valuesTable
142 err = this.valuesTable.Delete(oldStat.EncodeValueKey(version))
143 if err != nil {
144 return err
145 }
146 }
147
148 oldValue += stat.Value
149 stat.Value = oldValue
150 err = this.itemsTable.Set(statKey, stat)
151 if err != nil {
152 return err
153 }
154
155 // insert value into valuesTable
156 err = this.valuesTable.Insert(stat.EncodeValueKey(version), nil)
157 if err != nil {
158 return err
159 }
160 }
161
162 // sum
163 {
164 var sumKey = stat.EncodeSumKey(version)

Callers 1

StartMethod · 0.95

Calls 15

NewFunction · 0.92
IsNotFoundFunction · 0.92
DecodeSumValueFunction · 0.85
EncodeSumValueFunction · 0.85
UniqueKeyMethod · 0.80
EncodeValueKeyMethod · 0.80
EncodeSumKeyMethod · 0.80
DeleteMethod · 0.65
LockMethod · 0.45
StringMethod · 0.45
UnlockMethod · 0.45
FullKeyMethod · 0.45

Tested by

no test coverage detected