fix: task length did not match range length (#2787)

Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
Gaius 2023-10-10 18:28:59 +08:00 committed by GitHub
parent 47c6cdd8cc
commit 61f63e2e8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 8 deletions

View File

@ -259,10 +259,14 @@ func (o *objectStorage) getObject(ctx *gin.Context) {
bucketName = params.ID
objectKey = strings.TrimPrefix(params.ObjectKey, string(os.PathSeparator))
filter = query.Filter
rg *nethttp.Range
err error
)
// Initialize request of the stream task.
req := &peer.StreamTaskRequest{
PeerID: o.peerIDGenerator.PeerID(),
}
// Initialize filter field.
urlMeta := &commonv1.UrlMeta{Filter: o.config.ObjectStorage.Filter}
if filter != "" {
@ -290,7 +294,7 @@ func (o *objectStorage) getObject(ctx *gin.Context) {
ctx.JSON(http.StatusRequestedRangeNotSatisfiable, gin.H{"errors": err.Error()})
return
}
rg = &rangeValue
req.Range = &rangeValue
// Range header in dragonfly is without "bytes=".
urlMeta.Range = strings.TrimPrefix(rangeHeader, "bytes=")
@ -299,23 +303,20 @@ func (o *objectStorage) getObject(ctx *gin.Context) {
// there is no need to calculate md5, set this value to empty.
urlMeta.Digest = ""
}
req.URLMeta = urlMeta
signURL, err := o.objectStorageClient.GetSignURL(ctx, bucketName, objectKey, objectstorage.MethodGet, defaultSignExpireTime)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"errors": err.Error()})
return
}
req.URL = signURL
taskID := idgen.TaskIDV1(signURL, urlMeta)
log := logger.WithTaskID(taskID)
log.Infof("get object %s meta: %s %#v", objectKey, signURL, urlMeta)
reader, attr, err := o.peerTaskManager.StartStreamTask(ctx, &peer.StreamTaskRequest{
URL: signURL,
URLMeta: urlMeta,
Range: rg,
PeerID: o.peerIDGenerator.PeerID(),
})
reader, attr, err := o.peerTaskManager.StartStreamTask(ctx, req)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"errors": err.Error()})
return