chore: optimize stream task id (#2983)
Signed-off-by: Jim Ma <majinjing3@gmail.com>
This commit is contained in:
parent
b9c25f8c37
commit
09b11a280a
|
|
@ -341,6 +341,7 @@ func (ptm *peerTaskManager) StartStreamTask(ctx context.Context, req *StreamTask
|
||||||
IsMigrating: false,
|
IsMigrating: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taskID := idgen.TaskIDV1(req.URL, req.URLMeta)
|
||||||
if ptm.Multiplex {
|
if ptm.Multiplex {
|
||||||
// try breakpoint resume for task has range header
|
// try breakpoint resume for task has range header
|
||||||
if req.Range != nil && !ptm.SplitRunningTasks {
|
if req.Range != nil && !ptm.SplitRunningTasks {
|
||||||
|
|
@ -357,14 +358,14 @@ func (ptm *peerTaskManager) StartStreamTask(ctx context.Context, req *StreamTask
|
||||||
}
|
}
|
||||||
|
|
||||||
// reuse by completed task
|
// reuse by completed task
|
||||||
r, attr, ok := ptm.tryReuseStreamPeerTask(ctx, req)
|
r, attr, ok := ptm.tryReuseStreamPeerTask(ctx, taskID, req)
|
||||||
if ok {
|
if ok {
|
||||||
metrics.PeerTaskCacheHitCount.Add(1)
|
metrics.PeerTaskCacheHitCount.Add(1)
|
||||||
return r, attr, nil
|
return r, attr, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pt, err := ptm.newStreamTask(ctx, peerTaskRequest, req.Range)
|
pt, err := ptm.newStreamTask(ctx, taskID, peerTaskRequest, req.Range)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -910,6 +910,7 @@ func (ts *testSpec) runConductorTest(assert *testifyassert.Assertions, require *
|
||||||
|
|
||||||
// test reuse stream task
|
// test reuse stream task
|
||||||
rc, _, ok := ptm.tryReuseStreamPeerTask(context.Background(),
|
rc, _, ok := ptm.tryReuseStreamPeerTask(context.Background(),
|
||||||
|
taskID,
|
||||||
&StreamTaskRequest{
|
&StreamTaskRequest{
|
||||||
URL: ts.url,
|
URL: ts.url,
|
||||||
URLMeta: urlMeta,
|
URLMeta: urlMeta,
|
||||||
|
|
|
||||||
|
|
@ -225,9 +225,8 @@ func (ptm *peerTaskManager) storePartialFile(ctx context.Context, request *FileT
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ptm *peerTaskManager) tryReuseStreamPeerTask(ctx context.Context,
|
func (ptm *peerTaskManager) tryReuseStreamPeerTask(ctx context.Context, taskID string,
|
||||||
request *StreamTaskRequest) (io.ReadCloser, map[string]string, bool) {
|
request *StreamTaskRequest) (io.ReadCloser, map[string]string, bool) {
|
||||||
taskID := idgen.TaskIDV1(request.URL, request.URLMeta)
|
|
||||||
var (
|
var (
|
||||||
reuse *storage.ReusePeerTask
|
reuse *storage.ReusePeerTask
|
||||||
reuseRange *http.Range // the range of parent peer task data to read
|
reuseRange *http.Range // the range of parent peer task data to read
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import (
|
||||||
"d7y.io/dragonfly/v2/client/daemon/storage"
|
"d7y.io/dragonfly/v2/client/daemon/storage"
|
||||||
"d7y.io/dragonfly/v2/client/daemon/storage/mocks"
|
"d7y.io/dragonfly/v2/client/daemon/storage/mocks"
|
||||||
"d7y.io/dragonfly/v2/client/daemon/test"
|
"d7y.io/dragonfly/v2/client/daemon/test"
|
||||||
|
"d7y.io/dragonfly/v2/pkg/idgen"
|
||||||
"d7y.io/dragonfly/v2/pkg/net/http"
|
"d7y.io/dragonfly/v2/pkg/net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -713,7 +714,9 @@ func TestReuseStreamPeerTask(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
tc.verify(ptm.tryReuseStreamPeerTask(context.Background(), tc.request))
|
|
||||||
|
taskID := idgen.TaskIDV1(tc.request.URL, tc.request.URLMeta)
|
||||||
|
tc.verify(ptm.tryReuseStreamPeerTask(context.Background(), taskID, tc.request))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ import (
|
||||||
"d7y.io/dragonfly/v2/client/daemon/storage"
|
"d7y.io/dragonfly/v2/client/daemon/storage"
|
||||||
logger "d7y.io/dragonfly/v2/internal/dflog"
|
logger "d7y.io/dragonfly/v2/internal/dflog"
|
||||||
"d7y.io/dragonfly/v2/internal/util"
|
"d7y.io/dragonfly/v2/internal/util"
|
||||||
"d7y.io/dragonfly/v2/pkg/idgen"
|
|
||||||
"d7y.io/dragonfly/v2/pkg/net/http"
|
"d7y.io/dragonfly/v2/pkg/net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -73,6 +72,7 @@ type resumeStreamTask struct {
|
||||||
|
|
||||||
func (ptm *peerTaskManager) newStreamTask(
|
func (ptm *peerTaskManager) newStreamTask(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
|
taskID string,
|
||||||
request *schedulerv1.PeerTaskRequest,
|
request *schedulerv1.PeerTaskRequest,
|
||||||
rg *http.Range) (*streamTask, error) {
|
rg *http.Range) (*streamTask, error) {
|
||||||
metrics.StreamTaskCount.Add(1)
|
metrics.StreamTaskCount.Add(1)
|
||||||
|
|
@ -87,7 +87,6 @@ func (ptm *peerTaskManager) newStreamTask(
|
||||||
parent = ptm.prefetchParentTask(request, "")
|
parent = ptm.prefetchParentTask(request, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
taskID := idgen.TaskIDV1(request.Url, request.UrlMeta)
|
|
||||||
ptc, err := ptm.getPeerTaskConductor(ctx, taskID, request, limit, parent, rg, "", false)
|
ptc, err := ptm.getPeerTaskConductor(ctx, taskID, request, limit, parent, rg, "", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ func TestStreamPeerTask_BackSource_Partial_WithContentLength(t *testing.T) {
|
||||||
PeerHost: &schedulerv1.PeerHost{},
|
PeerHost: &schedulerv1.PeerHost{},
|
||||||
}
|
}
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
pt, err := ptm.newStreamTask(ctx, req, nil)
|
pt, err := ptm.newStreamTask(ctx, taskID, req, nil)
|
||||||
assert.Nil(err, "new stream peer task")
|
assert.Nil(err, "new stream peer task")
|
||||||
|
|
||||||
rc, _, err := pt.Start(ctx)
|
rc, _, err := pt.Start(ctx)
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,8 @@ func TestStreamPeerTask_Resume(t *testing.T) {
|
||||||
|
|
||||||
// set up parent task
|
// set up parent task
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
pt, err := ptm.newStreamTask(ctx, req, nil)
|
|
||||||
|
pt, err := ptm.newStreamTask(ctx, taskID, req, nil)
|
||||||
assert.Nil(err, "new parent stream peer task")
|
assert.Nil(err, "new parent stream peer task")
|
||||||
|
|
||||||
rc, _, err := pt.Start(ctx)
|
rc, _, err := pt.Start(ctx)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue