Skip to content

Commit 208c68e

Browse files
authored
Support gRPC for cache uploads (#985)
Forgot to use ProxyUploadToURL for uploads.
1 parent e0a0c3b commit 208c68e

File tree

1 file changed

+9
-32
lines changed

1 file changed

+9
-32
lines changed

internal/agent/http_cache/http_cache.go

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package http_cache
22

33
import (
4-
"bufio"
54
"context"
65
"errors"
76
"fmt"
@@ -10,7 +9,6 @@ import (
109
"net/http"
1110
"runtime"
1211
"strconv"
13-
"strings"
1412
"time"
1513

1614
"github.com/cirruslabs/cirrus-cli/internal/agent/client"
@@ -236,7 +234,7 @@ func (httpCache *HTTPCache) uploadCacheEntry(w http.ResponseWriter, r *http.Requ
236234
TaskIdentification: client.CirrusTaskIdentification,
237235
CacheKey: cacheKey,
238236
}
239-
generateResp, err := client.CirrusClient.GenerateCacheUploadURL(context.Background(), &key)
237+
generateResp, err := client.CirrusClient.GenerateCacheUploadURL(r.Context(), &key)
240238
if err != nil {
241239
errorMsg := fmt.Sprintf("Failed to initialized uploading of %s cache! %s", cacheKey, err)
242240
slog.Error(errorMsg)
@@ -253,37 +251,16 @@ func (httpCache *HTTPCache) uploadCacheEntry(w http.ResponseWriter, r *http.Requ
253251
w.Write([]byte(errorMsg))
254252
return
255253
}
256-
req, err := http.NewRequest("PUT", generateResp.Url, bufio.NewReader(r.Body))
257-
if err != nil {
258-
slog.Error("Cache upload failed", "cache_key", cacheKey, "err", err)
259-
w.WriteHeader(http.StatusInternalServerError)
260-
return
261-
}
262-
req.Header.Set("Content-Type", "application/octet-stream")
263-
req.ContentLength = r.ContentLength
264-
for k, v := range generateResp.GetExtraHeaders() {
265-
req.Header.Set(k, v)
266-
}
267-
resp, err := httpCache.httpClient.Do(req)
268-
if err != nil {
269-
errorMsg := fmt.Sprintf("Failed to proxy upload of %s cache! %s", cacheKey, err)
270-
slog.Error(errorMsg)
271-
w.WriteHeader(http.StatusInternalServerError)
272-
w.Write([]byte(errorMsg))
273-
return
254+
urlInfo := storage.URLInfo{
255+
URL: generateResp.Url,
256+
ExtraHeaders: generateResp.GetExtraHeaders(),
274257
}
275-
if resp.StatusCode >= 400 {
276-
slog.Error("Failed to proxy upload of cache", "cache_key", cacheKey, "status", resp.Status)
277-
278-
var headersBuilder strings.Builder
279-
req.Header.Write(&headersBuilder)
280-
slog.Error("Headers for PUT request", "url", generateResp.Url, "headers", headersBuilder.String())
281-
282-
var responseBuilder strings.Builder
283-
resp.Write(&responseBuilder)
284-
slog.Error("Failed response", "response", responseBuilder.String())
258+
uploadResource := urlproxy.UploadResource{
259+
Body: r.Body,
260+
ContentLength: r.ContentLength,
261+
ResourceName: cacheKey,
285262
}
286-
w.WriteHeader(resp.StatusCode)
263+
httpCache.proxy.ProxyUploadToURL(r.Context(), w, &urlInfo, uploadResource)
287264
}
288265

289266
func deleteCacheEntry(w http.ResponseWriter, cacheKey string) {

0 commit comments

Comments
 (0)