2960: Rename parseLocator to getLocatorInfo, add comments.
authorTom Clegg <tom@curii.com>
Thu, 22 Feb 2024 15:12:18 +0000 (10:12 -0500)
committerTom Clegg <tom@curii.com>
Thu, 22 Feb 2024 15:12:18 +0000 (10:12 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

services/keepstore/keepstore.go
services/keepstore/keepstore_test.go
services/keepstore/pull_worker.go
services/keepstore/router.go
services/keepstore/trash_worker.go

index c9a80230597c5eacc5bac7e66d48d82439420610..d85961fd2a8d7c6d07d8c2a3ecbd1e1bc75a7876 100644 (file)
@@ -223,7 +223,7 @@ func (ks *keepstore) signLocator(token, locator string) string {
 }
 
 func (ks *keepstore) BlockRead(ctx context.Context, opts arvados.BlockReadOptions) (n int, err error) {
-       li, err := parseLocator(opts.Locator)
+       li, err := getLocatorInfo(opts.Locator)
        if err != nil {
                return 0, err
        }
@@ -611,7 +611,7 @@ func (ce *checkEqual) WriteAt(p []byte, offset int64) (int, error) {
 }
 
 func (ks *keepstore) BlockUntrash(ctx context.Context, locator string) error {
-       li, err := parseLocator(locator)
+       li, err := getLocatorInfo(locator)
        if err != nil {
                return err
        }
@@ -631,7 +631,7 @@ func (ks *keepstore) BlockUntrash(ctx context.Context, locator string) error {
 }
 
 func (ks *keepstore) BlockTouch(ctx context.Context, locator string) error {
-       li, err := parseLocator(locator)
+       li, err := getLocatorInfo(locator)
        if err != nil {
                return err
        }
@@ -655,7 +655,7 @@ func (ks *keepstore) BlockTrash(ctx context.Context, locator string) error {
        if !ks.cluster.Collections.BlobTrash {
                return errMethodNotAllowed
        }
-       li, err := parseLocator(locator)
+       li, err := getLocatorInfo(locator)
        if err != nil {
                return err
        }
@@ -708,14 +708,16 @@ func ctxToken(ctx context.Context) string {
        }
 }
 
+// locatorInfo expresses the attributes of a locator that are relevant
+// for keepstore decision-making.
 type locatorInfo struct {
        hash   string
        size   int
-       remote bool
-       signed bool
+       remote bool // locator has a +R hint
+       signed bool // locator has a +A hint
 }
 
-func parseLocator(loc string) (locatorInfo, error) {
+func getLocatorInfo(loc string) (locatorInfo, error) {
        var li locatorInfo
        for i, part := range strings.Split(loc, "+") {
                if i == 0 {
index 28049506f6370f0fea8b28066a2b16cfa544e3c7..79d51829fee0ee7521aacdfc776fefc9da2bcc9a 100644 (file)
@@ -638,7 +638,7 @@ func (s *keepstoreSuite) TestParseLocator(c *C) {
                        ok: false},
        } {
                c.Logf("=== %s", trial.locator)
-               li, err := parseLocator(trial.locator)
+               li, err := getLocatorInfo(trial.locator)
                if !trial.ok {
                        c.Check(err, NotNil)
                        continue
index c131de02cbbfc01230015b59aa1350420da830ae..dc5eabaa15bbc0b4c5e94add8b5bc461aad998ed 100644 (file)
@@ -120,7 +120,7 @@ func (p *puller) runWorker(ctx context.Context) {
 
                        logger := p.keepstore.logger.WithField("locator", item.Locator)
 
-                       li, err := parseLocator(item.Locator)
+                       li, err := getLocatorInfo(item.Locator)
                        if err != nil {
                                logger.Warn("ignoring pull request for invalid locator")
                                return
index 256bc18c2698c80e5d0ff7d9fe1eb73d8f4c3747..0c8182c6ea31c91a8c20056e8ca886df43d27712 100644 (file)
@@ -85,7 +85,7 @@ func (rtr *router) handleBlockRead(w http.ResponseWriter, req *http.Request) {
        out := w
        if req.Method == http.MethodHead {
                out = discardWrite{ResponseWriter: w}
-       } else if li, err := parseLocator(mux.Vars(req)["locator"]); err != nil {
+       } else if li, err := getLocatorInfo(mux.Vars(req)["locator"]); err != nil {
                rtr.handleError(w, req, err)
                return
        } else if li.size == 0 && li.hash != "d41d8cd98f00b204e9800998ecf8427e" {
index d704c3a7d5d821713a14d75b403b67326966caa7..819c25acc1385d11202256bc73ac7e94ed92ab49 100644 (file)
@@ -107,7 +107,7 @@ func (t *trasher) runWorker(ctx context.Context, mntsAllowTrash []*mount) {
                        defer t.inprogress.Add(-1)
                        logger := t.keepstore.logger.WithField("locator", item.Locator)
 
-                       li, err := parseLocator(item.Locator)
+                       li, err := getLocatorInfo(item.Locator)
                        if err != nil {
                                logger.Warn("ignoring trash request for invalid locator")
                                return