Skip to content

Commit d436d88

Browse files
committed
use report API
1 parent 29265d0 commit d436d88

File tree

4 files changed

+27
-8
lines changed

4 files changed

+27
-8
lines changed

cluster/requests.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,13 @@ func (cr *Cluster) RequestCert(ctx context.Context) (ckp *CertKeyPair, err error
260260
return
261261
}
262262

263-
func (cr *Cluster) ReportDownload(ctx context.Context, request *http.Request, err error) error {
263+
func (cr *Cluster) ReportDownload(ctx context.Context, response *http.Response, err error) error {
264264
type ReportPayload struct {
265265
Urls []string `json:"urls"`
266266
Error utils.EmbedJSON[struct{ Message string }] `json:"error"`
267267
}
268268
var payload ReportPayload
269-
redirects := utils.GetRedirects(request)
269+
redirects := utils.GetRedirects(response.Request)
270270
payload.Urls = make([]string, len(redirects))
271271
for i, u := range redirects {
272272
payload.Urls[i] = u.String()

cluster/storage.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ type FileInfo struct {
7575

7676
type RequestPath struct {
7777
*http.Request
78-
Path string
78+
Cluster *Cluster
79+
Path string
7980
}
8081

8182
type StorageFileInfo struct {
@@ -153,7 +154,11 @@ func (cr *Cluster) GetFileList(ctx context.Context, fileMap map[string]*StorageF
153154
if err != nil {
154155
return err
155156
}
156-
ff.URLs[req.URL.String()] = RequestPath{Request: req, Path: f.Path}
157+
ff.URLs[req.URL.String()] = RequestPath{
158+
Request: req,
159+
Cluster: cr,
160+
Path: f.Path,
161+
}
157162
fileMap[f.Hash] = ff
158163
}
159164
}
@@ -548,9 +553,9 @@ func (c *HTTPClient) fetchFile(ctx context.Context, stats *syncStats, f *Storage
548553
}
549554

550555
reqInd := 0
551-
reqs := make([]*http.Request, 0, len(f.URLs))
556+
reqs := make([]RequestPath, 0, len(f.URLs))
552557
for _, rq := range f.URLs {
553-
reqs = append(reqs, rq.Request)
558+
reqs = append(reqs, rq)
554559
}
555560

556561
fileRes := make(chan *os.File, 1)
@@ -610,10 +615,18 @@ func (c *HTTPClient) fetchFile(ctx context.Context, stats *syncStats, f *Storage
610615
if _, err := fd.Seek(io.SeekStart, 0); err != nil {
611616
return err
612617
}
613-
if err := c.fetchFileWithBuf(ctx, reqs[reqInd], f.Size, hashMethod, f.Hash, fd, buf, func(r io.Reader) io.Reader {
618+
rp := reqs[reqInd]
619+
if err := c.fetchFileWithBuf(ctx, rp.Request, f.Size, hashMethod, f.Hash, fd, buf, func(r io.Reader) io.Reader {
614620
return utils.ProxyPBReader(r, bar, stats.totalBar, &stats.lastInc)
615621
}); err != nil {
616622
reqInd = (reqInd + 1) % len(reqs)
623+
if rerr, ok := err.(*utils.RedirectError); ok {
624+
go func() {
625+
if err := rp.Cluster.ReportDownload(context.WithoutCancel(ctx), rerr.GetResponse(), rerr.Unwrap()); err != nil {
626+
log.Warnf("Report API error: %v", err)
627+
}
628+
}()
629+
}
617630
return err
618631
}
619632
return nil

internal/build/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"fmt"
2424
)
2525

26-
const ClusterVersion = "1.10.9"
26+
const ClusterVersion = "1.11.0"
2727

2828
var BuildVersion string = "dev"
2929

utils/http.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,14 @@ func GetRedirects(req *http.Request) []*url.URL {
525525

526526
type RedirectError struct {
527527
Redirects []*url.URL
528+
Response *http.Response
528529
Err error
529530
}
530531

531532
func ErrorFromRedirect(err error, resp *http.Response) *RedirectError {
532533
return &RedirectError{
533534
Redirects: GetRedirects(resp.Request),
535+
Response: resp,
534536
Err: err,
535537
}
536538
}
@@ -551,6 +553,10 @@ func (e *RedirectError) Error() string {
551553
return b.String()
552554
}
553555

556+
func (e *RedirectError) GetResponse() *http.Response {
557+
return e.Response
558+
}
559+
554560
func (e *RedirectError) Unwrap() error {
555561
return e.Err
556562
}

0 commit comments

Comments
 (0)