20318: Bypass disk cache in certain tests, keepstore, and keepproxy.
authorTom Clegg <tom@curii.com>
Thu, 11 Jan 2024 16:48:28 +0000 (11:48 -0500)
committerTom Clegg <tom@curii.com>
Thu, 11 Jan 2024 16:48:28 +0000 (11:48 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

sdk/go/keepclient/keepclient.go
services/keep-balance/integration_test.go
services/keepproxy/keepproxy.go
services/keepproxy/keepproxy_test.go
services/keepstore/command.go
services/keepstore/proxy_remote.go

index b03362ee48ad3b81768a78d672a157457890c216..c470e47ca10438357c06b00f05c1189f1a6e7454 100644 (file)
@@ -100,6 +100,8 @@ type HTTPClient interface {
        Do(*http.Request) (*http.Response, error)
 }
 
+const DiskCacheDisabled = arvados.ByteSizeOrPercent(1)
+
 // KeepClient holds information about Arvados and Keep servers.
 type KeepClient struct {
        Arvados               *arvadosclient.ArvadosClient
@@ -112,8 +114,8 @@ type KeepClient struct {
        Retries               int
        RequestID             string
        StorageClasses        []string
-       DefaultStorageClasses []string // Set by cluster's exported config
-       DiskCacheSize         arvados.ByteSizeOrPercent
+       DefaultStorageClasses []string                  // Set by cluster's exported config
+       DiskCacheSize         arvados.ByteSizeOrPercent // See also DiskCacheDisabled
 
        // set to 1 if all writable services are of disk type, otherwise 0
        replicasPerService int
@@ -385,10 +387,15 @@ func (kc *KeepClient) upstreamGateway() arvados.KeepGateway {
                makedirs(home, userCacheDir)
                cachedir = filepath.Join(home, userCacheDir)
        }
-       kc.gatewayStack = &arvados.DiskCache{
-               Dir:         cachedir,
-               MaxSize:     kc.DiskCacheSize,
-               KeepGateway: &keepViaHTTP{kc},
+       backend := &keepViaHTTP{kc}
+       if kc.DiskCacheSize == DiskCacheDisabled {
+               kc.gatewayStack = backend
+       } else {
+               kc.gatewayStack = &arvados.DiskCache{
+                       Dir:         cachedir,
+                       MaxSize:     kc.DiskCacheSize,
+                       KeepGateway: backend,
+               }
        }
        return kc.gatewayStack
 }
index 2e353c92be7d5100d2384796fd8a5527b0d46381..18cfd121069dfdd3be476c4f016ad7853e73bc51 100644 (file)
@@ -47,6 +47,7 @@ func (s *integrationSuite) SetUpSuite(c *check.C) {
 
        s.keepClient, err = keepclient.MakeKeepClient(arv)
        c.Assert(err, check.IsNil)
+       s.keepClient.DiskCacheSize = keepclient.DiskCacheDisabled
        s.putReplicas(c, "foo", 4)
        s.putReplicas(c, "bar", 1)
 }
index a79883147b5c4dc95ddb003686f0d3f1d73b9240..6d173ab00dcd4fc407b095f2d1b54f9f1f7cb127 100644 (file)
@@ -321,6 +321,7 @@ func (h *proxyHandler) Get(resp http.ResponseWriter, req *http.Request) {
        }()
 
        kc := h.makeKeepClient(req)
+       kc.DiskCacheSize = keepclient.DiskCacheDisabled
 
        var pass bool
        var tok string
index 4e53797d80044715baa672ed38a82d0e3cf32a5e..f57aeb3617cc9a8c59197c520563eb23a79465f2 100644 (file)
@@ -142,6 +142,7 @@ func runProxy(c *C, bogusClientToken bool, loadKeepstoresFromConfig bool, kp *ar
                arv.ApiToken = "bogus-token"
        }
        kc := keepclient.New(arv)
+       kc.DiskCacheSize = keepclient.DiskCacheDisabled
        sr := map[string]string{
                TestProxyUUID: "http://" + srv.Addr,
        }
index db387f494b06c8d8b4e3fc1b38f7732e187e767f..48c8256a3ca1e22e524b60fe89ebc7de26be54e7 100644 (file)
@@ -205,6 +205,7 @@ func (h *handler) setup(ctx context.Context, cluster *arvados.Cluster, token str
        h.keepClient = &keepclient.KeepClient{
                Arvados:       ac,
                Want_replicas: 1,
+               DiskCacheSize: keepclient.DiskCacheDisabled,
        }
        h.keepClient.Arvados.ApiToken = fmt.Sprintf("%x", rand.Int63())
 
index 66a7b43751628ea5e50a90994fe86805c55f498f..325f1cf485bd6738305040bbb197e050ba55dee3 100644 (file)
@@ -119,6 +119,7 @@ func (rp *remoteProxy) remoteClient(remoteID string, remoteCluster arvados.Remot
                if err != nil {
                        return nil, err
                }
+               kc.DiskCacheSize = keepclient.DiskCacheDisabled
 
                rp.mtx.Lock()
                if rp.clients == nil {