@@ -59,6 +59,9 @@ type Job interface {
5959 // GetTask retrieves task information from all hosts in the cluster.
6060 GetTask (context.Context , * internaljob.GetTaskRequest , * logger.SugaredLoggerOnWith ) (* internaljob.GetTaskResponse , error )
6161
62+ // ListTaskEntries lists all task entries.
63+ ListTaskEntries (context.Context , * internaljob.ListTaskEntriesRequest , * logger.SugaredLoggerOnWith ) (* internaljob.ListTaskEntriesResponse , error )
64+
6265 // PreheatSinglePeer preheats job by single seed peer, scheduler will trigger seed peer to download task.
6366 PreheatSingleSeedPeer (context.Context , * internaljob.PreheatRequest , * logger.SugaredLoggerOnWith ) (* internaljob.PreheatResponse , error )
6467
@@ -1034,3 +1037,47 @@ func (j *job) deleteTask(ctx context.Context, data string) (string, error) {
10341037 SchedulerClusterID : j .config .Manager .SchedulerClusterID ,
10351038 })
10361039}
1040+
1041+ func (j * job ) ListTaskEntries (ctx context.Context , req * internaljob.ListTaskEntriesRequest , log * logger.SugaredLoggerOnWith ) (* internaljob.ListTaskEntriesResponse , error ) {
1042+ advertiseIP := j .config .Server .AdvertiseIP .String ()
1043+
1044+ selected , err := j .resource .SeedPeer ().Select (ctx , req .TaskID )
1045+ if err != nil {
1046+ return nil , err
1047+ }
1048+
1049+ addr := fmt .Sprintf ("%s:%d" , selected .IP , selected .Port )
1050+ log .Infof ("selected seed peer %s for task %s" , addr , req .TaskID )
1051+
1052+ dfdaemonClient , err := dfdaemonclient .GetV2ByAddr (ctx , addr , j .dialOptions ... )
1053+ if err != nil {
1054+ log .Errorf ("[list-task-entries] get dfdaemon client failed: %s" , err )
1055+ return nil , err
1056+ }
1057+
1058+ res , err := dfdaemonClient .ListTaskEntries (ctx , & dfdaemonv2.ListTaskEntriesRequest {
1059+ TaskId : req .TaskID ,
1060+ Url : req .Url ,
1061+ RequestHeader : req .Header ,
1062+ Timeout : req .Timeout ,
1063+ CertificateChain : req .CertificateChain ,
1064+ ObjectStorage : req .ObjectStorage ,
1065+ Hdfs : req .Hdfs ,
1066+ RemoteIp : & advertiseIP ,
1067+ })
1068+ if err != nil {
1069+ log .Errorf ("[list-task-entries]list task entries failed: %s" , err )
1070+ return nil , err
1071+ }
1072+
1073+ var recursive bool
1074+ if len (res .Entries ) > 1 {
1075+ recursive = true
1076+ }
1077+
1078+ return & internaljob.ListTaskEntriesResponse {
1079+ Recursive : recursive ,
1080+ Entries : res .Entries ,
1081+ SchedulerID : j .config .Manager .SchedulerClusterID ,
1082+ }, nil
1083+ }
0 commit comments