(stat *Stat)
| 105 | } |
| 106 | |
| 107 | func (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) |
no test coverage detected