(key string)
| 1253 | } |
| 1254 | |
| 1255 | func (m *KV) Delete(key string) error { |
| 1256 | m.storeMu.Lock() |
| 1257 | val, ok := m.store[key] |
| 1258 | m.storeMu.Unlock() |
| 1259 | |
| 1260 | if !ok || val.Deleted { |
| 1261 | return nil |
| 1262 | } |
| 1263 | |
| 1264 | c := m.GetCodec(val.CodecID) |
| 1265 | if c == nil { |
| 1266 | level.Error(m.logger).Log("msg", "could not mark key for deletion due to an invalid codec", "key", key, "codec", val.CodecID) |
| 1267 | return fmt.Errorf("invalid codec: %s", val.CodecID) |
| 1268 | } |
| 1269 | |
| 1270 | change, newver, deleted, updated, err := m.mergeValueForKey(key, val.value, false, 0, val.CodecID, true, time.Now()) |
| 1271 | if err != nil { |
| 1272 | level.Error(m.logger).Log("msg", "could not mark key for deletion due to error while trying to merge new value", "key", key, "err", err) |
| 1273 | return err |
| 1274 | } |
| 1275 | |
| 1276 | if newver > 0 { |
| 1277 | m.notifyWatchers(key) |
| 1278 | m.broadcastNewValue(key, change, newver, c, false, deleted, updated) |
| 1279 | } |
| 1280 | |
| 1281 | level.Info(m.logger).Log("msg", "successfully marked key for deletion", "key", key) |
| 1282 | |
| 1283 | return nil |
| 1284 | } |
| 1285 | |
| 1286 | // CAS implements Compare-And-Set/Swap operation. |
| 1287 | // |
nothing calls this directly
no test coverage detected