// InternalGC iterates through the list of keys to garbage collect // specified in the arguments. MVCCGarbageCollect is invoked on each // listed key along with the expiration timestamp. The GC metadata // specified in the args is persisted after GC. func (r *Range) InternalGC(batch engine.Engine, ms *engine.MVCCStats, args *proto.InternalGCRequest, reply *proto.InternalGCResponse) { // Garbage collect the specified keys by expiration timestamps. if err := engine.MVCCGarbageCollect(batch, ms, args.Keys, args.Timestamp); err != nil { reply.SetGoError(err) return } // Store the GC metadata for this range. key := keys.RangeGCMetadataKey(r.Desc().RaftID) err := engine.MVCCPutProto(batch, ms, key, proto.ZeroTimestamp, nil, &args.GCMeta) reply.SetGoError(err) }
// InternalGC iterates through the list of keys to garbage collect // specified in the arguments. MVCCGarbageCollect is invoked on each // listed key along with the expiration timestamp. The GC metadata // specified in the args is persisted after GC. func (r *Range) InternalGC(batch engine.Engine, ms *engine.MVCCStats, args proto.InternalGCRequest) (proto.InternalGCResponse, error) { var reply proto.InternalGCResponse // Garbage collect the specified keys by expiration timestamps. if err := engine.MVCCGarbageCollect(batch, ms, args.Keys, args.Timestamp); err != nil { return reply, err } // Store the GC metadata for this range. key := keys.RangeGCMetadataKey(r.Desc().RaftID) if err := engine.MVCCPutProto(batch, ms, key, proto.ZeroTimestamp, nil, &args.GCMeta); err != nil { return reply, err } return reply, nil }