MCPcopy
hub / github.com/NVIDIA/aistore / listObjects

Method listObjects

ais/target.go:632–681  ·  view source on GitHub ↗

listObjects returns a list of objects in a bucket (with optional prefix).

(w http.ResponseWriter, r *http.Request, bck *cluster.Bck, actMsg *aisMsg)

Source from the content-addressed store, hash-verified

630
631// listObjects returns a list of objects in a bucket (with optional prefix).
632func (t *target) listObjects(w http.ResponseWriter, r *http.Request, bck *cluster.Bck, actMsg *aisMsg) (ok bool) {
633 var msg *apc.ListObjsMsg
634 if err := cos.MorphMarshal(actMsg.Value, &msg); err != nil {
635 t.writeErrf(w, r, cmn.FmtErrMorphUnmarshal, t.si, actMsg.Action, actMsg.Value, err)
636 return
637 }
638 if !bck.IsAIS() && !msg.IsFlagSet(apc.LsPresent) {
639 maxCloudPageSize := t.Backend(bck).MaxPageSize()
640 if msg.PageSize > maxCloudPageSize {
641 t.writeErrf(w, r, "page size %d exceeds the supported maximum (%d)", msg.PageSize, maxCloudPageSize)
642 return false
643 }
644 if msg.PageSize == 0 {
645 msg.PageSize = maxCloudPageSize
646 }
647 }
648 debug.Assert(msg.PageSize != 0)
649 debug.Assert(cos.IsValidUUID(msg.UUID))
650
651 rns := xreg.RenewObjList(t, bck, msg.UUID, msg)
652 xctn := rns.Entry.Get()
653 // Double check that xaction has not gone before starting page read.
654 // Restart xaction if needed.
655 if rns.Err == xs.ErrGone {
656 rns = xreg.RenewObjList(t, bck, msg.UUID, msg)
657 xctn = rns.Entry.Get()
658 }
659 if rns.Err != nil {
660 t.writeErr(w, r, rns.Err)
661 return
662 }
663 if !rns.IsRunning() {
664 go xctn.Run(nil)
665 }
666
667 resp := xctn.(*xs.ObjListXact).Do(msg)
668 if resp.Err != nil {
669 t.writeErr(w, r, resp.Err, resp.Status)
670 return false
671 }
672
673 debug.Assert(resp.Status == http.StatusOK)
674 debug.Assert(resp.BckList.UUID != "")
675
676 if fs.MarkerExists(fname.RebalanceMarker) || reb.IsActiveGFN() {
677 resp.BckList.Flags |= cmn.BckListFlagRebalance
678 }
679
680 return t.writeMsgPack(w, r, resp.BckList, "list_objects")
681}
682
683func (t *target) bsumm(w http.ResponseWriter, r *http.Request, q url.Values, action string, bck *cluster.Bck, msg *apc.BckSummMsg) {
684 var (

Callers 1

httpbckgetMethod · 0.95

Calls 15

IsFlagSetMethod · 0.95
BackendMethod · 0.95
MorphMarshalFunction · 0.92
AssertFunction · 0.92
IsValidUUIDFunction · 0.92
RenewObjListFunction · 0.92
MarkerExistsFunction · 0.92
IsActiveGFNFunction · 0.92
writeErrfMethod · 0.80
writeErrMethod · 0.80
writeMsgPackMethod · 0.80
MaxPageSizeMethod · 0.65

Tested by

no test coverage detected