(ctx context.Context)
| 499 | } |
| 500 | |
| 501 | func (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 | } |
nothing calls this directly
no test coverage detected