func (h Handler) Delete(cmd common.DeleteRequest) error { // read metadata // delete metadata // for 0 to metadata.numChunks // delete item metaKey, metaData, err := getMetadata(h.rw, cmd.Key) if err != nil { if err == common.ErrKeyNotFound { metrics.IncCounter(MetricCmdDeleteMissesMeta) } return err } // Delete metadata first if err := binprot.WriteDeleteCmd(h.rw.Writer, metaKey); err != nil { return err } if err := simpleCmdLocal(h.rw, true); err != nil { if err == common.ErrKeyNotFound { metrics.IncCounter(MetricCmdDeleteMissesMeta) } return err } // Then delete data chunks for i := 0; i < int(metaData.NumChunks); i++ { chunkKey := chunkKey(cmd.Key, i) if err := binprot.WriteDeleteCmd(h.rw.Writer, chunkKey); err != nil { return err } } if err := h.rw.Flush(); err != nil { return err } miss := false for i := 0; i < int(metaData.NumChunks); i++ { if err := simpleCmdLocal(h.rw, false); err != nil { if err == common.ErrKeyNotFound && !miss { metrics.IncCounter(MetricCmdDeleteMissesChunk) miss = true } } } if miss { return common.ErrKeyNotFound } return nil }
func (h Handler) Delete(cmd common.DeleteRequest) error { // read metadata // delete metadata // for 0 to metadata.numChunks // delete item metaKey, metaData, err := getMetadata(h.rw, cmd.Key) if err != nil { if err == common.ErrKeyNotFound { //fmt.Println("Delete miss because of missing metadata. Key:", cmd.Key) } return err } // Delete metadata first if err := binprot.WriteDeleteCmd(h.rw.Writer, metaKey); err != nil { return err } if err := simpleCmdLocal(h.rw); err != nil { return err } // Then delete data chunks for i := 0; i < int(metaData.NumChunks); i++ { chunkKey := chunkKey(cmd.Key, i) if err := binprot.WriteDeleteCmd(h.rw.Writer, chunkKey); err != nil { return err } if err := simpleCmdLocal(h.rw); err != nil { return err } } return nil }
func (h Handler) Delete(cmd common.DeleteRequest) error { if err := binprot.WriteDeleteCmd(h.rw.Writer, cmd.Key); err != nil { return err } return simpleCmdLocal(h.rw) }