MCPcopy
hub / github.com/apache/devlake / UpdateProgressDetail

Function UpdateProgressDetail

backend/core/runner/run_task.go:352–400  ·  view source on GitHub ↗

UpdateProgressDetail FIXME ...

(basicRes context.BasicRes, taskId uint64, progressDetail *models.TaskProgressDetail, p *plugin.RunningProgress)

Source from the content-addressed store, hash-verified

350
351// UpdateProgressDetail FIXME ...
352func UpdateProgressDetail(basicRes context.BasicRes, taskId uint64, progressDetail *models.TaskProgressDetail, p *plugin.RunningProgress) {
353 cfg := basicRes.GetConfigReader()
354 skipSubtaskProgressUpdate := cfg.GetBool("SKIP_SUBTASK_PROGRESS")
355
356 task := &models.Task{
357 Model: common.Model{ID: taskId},
358 }
359 subtask := &models.Subtask{}
360 originalFinishedRecords := progressDetail.FinishedRecords
361 switch p.Type {
362 case plugin.TaskSetProgress:
363 progressDetail.TotalSubTasks = p.Total
364 progressDetail.FinishedSubTasks = p.Current
365 case plugin.TaskIncProgress:
366 progressDetail.FinishedSubTasks = p.Current
367 // TODO: get rid of db update
368 pct := float32(p.Current) / float32(p.Total)
369 err := basicRes.GetDal().UpdateColumn(task, "progress", pct)
370 if err != nil {
371 basicRes.GetLogger().Error(err, "failed to update progress")
372 }
373 case plugin.SubTaskSetProgress:
374 progressDetail.TotalRecords = p.Total
375 case plugin.SubTaskIncProgress:
376 progressDetail.FinishedRecords = p.Current
377 case plugin.SetCurrentSubTask:
378 progressDetail.SubTaskName = p.SubTaskName
379 progressDetail.SubTaskNumber = p.SubTaskNumber
380 // reset finished records
381 progressDetail.FinishedRecords = 0
382 }
383 if skipSubtaskProgressUpdate {
384 return
385 }
386 currentFinishedRecords := progressDetail.FinishedRecords
387 currentTotalRecords := progressDetail.TotalRecords
388 // update progress if progress is more than 1%
389 // or there is progress if no total record provided
390 if (currentTotalRecords > 0 && float64(currentFinishedRecords-originalFinishedRecords)/float64(currentTotalRecords) > 0.01) || (currentTotalRecords <= 0 && currentFinishedRecords > originalFinishedRecords) {
391 // update subtask progress
392 where := dal.Where("task_id = ? and name = ?", taskId, progressDetail.SubTaskName)
393 err := basicRes.GetDal().UpdateColumns(subtask, []dal.DalSet{
394 {ColumnName: "finished_records", Value: progressDetail.FinishedRecords},
395 }, where)
396 if err != nil {
397 basicRes.GetLogger().Error(err, "failed to update _devlake_subtasks progress")
398 }
399 }
400}
401
402func runSubtask(
403 basicRes context.BasicRes,

Callers

nothing calls this directly

Calls 7

GetBoolMethod · 0.80
GetConfigReaderMethod · 0.65
UpdateColumnMethod · 0.65
GetDalMethod · 0.65
ErrorMethod · 0.65
GetLoggerMethod · 0.65
UpdateColumnsMethod · 0.65

Tested by

no test coverage detected