MCPcopy Create free account
hub / github.com/cloudreve/cloudreve / Do

Method Do

pkg/filemanager/manager/upload.go:501–548  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

499}
500
501func (m *UploadSentinelCheckTask) Do(ctx context.Context) (task.Status, error) {
502 dep := dependency.FromContext(ctx)
503 taskClient := dep.TaskClient()
504 l := dep.Logger()
505 fm := NewFileManager(dep, inventory.UserFromContext(ctx)).(*manager)
506
507 // Check if sentinel is canceled due to callback complete
508 t, err := taskClient.GetTaskByID(ctx, m.ID())
509 if err != nil {
510 return task.StatusError, fmt.Errorf("failed to get task by ID: %w", err)
511 }
512
513 if t.Status == task.StatusCompleted {
514 l.Info("Upload sentinel check task [%d] is canceled due to callback complete.", m.ID())
515 return task.StatusCompleted, nil
516 }
517
518 // unmarshal state
519 state := &UploadSentinelCheckTaskState{}
520 if err := json.Unmarshal([]byte(m.State()), state); err != nil {
521 return task.StatusError, fmt.Errorf("failed to unmarshal state: %w", err)
522 }
523
524 l.Info("Upload sentinel check triggered, clean up stale place holder entity [%d].", state.Session.EntityID)
525 entity, err := fm.fs.GetEntity(ctx, state.Session.EntityID)
526 if err != nil {
527 l.Debug("Failed to get entity [%d]: %s, skip sentinel check.", state.Session.EntityID, err)
528 return task.StatusCompleted, nil
529 }
530
531 _, d, err := fm.getEntityPolicyDriver(ctx, entity, nil)
532 if err != nil {
533 l.Debug("Failed to get storage driver for entity [%d]: %s", state.Session.EntityID, err)
534 return task.StatusError, err
535 }
536
537 _, err = d.Delete(ctx, entity.Source())
538 if err != nil {
539 l.Debug("Failed to delete entity source [%d]: %s", state.Session.EntityID, err)
540 return task.StatusError, err
541 }
542
543 if err := d.CancelToken(ctx, state.Session); err != nil {
544 l.Debug("Failed to cancel token [%d]: %s", state.Session.EntityID, err)
545 }
546
547 return task.StatusCompleted, nil
548}

Callers

nothing calls this directly

Calls 15

FromContextFunction · 0.92
UserFromContextFunction · 0.92
NewFileManagerFunction · 0.85
getEntityPolicyDriverMethod · 0.80
TaskClientMethod · 0.65
LoggerMethod · 0.65
GetTaskByIDMethod · 0.65
IDMethod · 0.65
InfoMethod · 0.65
StateMethod · 0.65
GetEntityMethod · 0.65
DebugMethod · 0.65

Tested by

no test coverage detected