MCPcopy
hub / github.com/olric-data/olric / deleteKeys

Method deleteKeys

internal/dmap/delete.go:142–170  ·  view source on GitHub ↗
(ctx context.Context, keys ...string)

Source from the content-addressed store, hash-verified

140}
141
142func (dm *DMap) deleteKeys(ctx context.Context, keys ...string) (int, error) {
143 members := make(map[discovery.Member][]string)
144 for _, key := range keys {
145 hkey := partitions.HKey(dm.name, key)
146 member := dm.s.primary.PartitionByHKey(hkey).Owner()
147 members[member] = append(members[member], key)
148 }
149
150 for member, distributedKeys := range members {
151 if member.CompareByName(dm.s.rt.This()) {
152 for _, key := range distributedKeys {
153 if err := dm.deleteKey(key); err != nil {
154 return 0, err
155 }
156 }
157 } else {
158 cmd := protocol.NewDel(dm.name, distributedKeys...).Command(dm.s.ctx)
159 rc := dm.s.client.Get(member.String())
160 err := rc.Process(ctx, cmd)
161 if err != nil {
162 return 0, protocol.ConvertError(err)
163 }
164
165 return 0, protocol.ConvertError(cmd.Err())
166 }
167 }
168
169 return len(keys), nil
170}
171
172// Delete deletes the value for the given key. Delete will not return error if key doesn't exist. It's thread-safe.
173// It is safe to modify the contents of the argument after Delete returns.

Callers 3

DeleteMethod · 0.95
unlockKeyMethod · 0.95
delCommandHandlerMethod · 0.80

Implementers 2

ClusterDMapcluster_client.go
EmbeddedDMapembedded_client.go

Calls 11

deleteKeyMethod · 0.95
HKeyFunction · 0.92
NewDelFunction · 0.92
ConvertErrorFunction · 0.92
OwnerMethod · 0.80
PartitionByHKeyMethod · 0.80
CompareByNameMethod · 0.80
ThisMethod · 0.80
GetMethod · 0.65
CommandMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected