MCPcopy
hub / github.com/fluid-cloudnative/fluid / SetDataOperationInTargetDataset

Function SetDataOperationInTargetDataset

pkg/ddc/base/operation_lock.go:40–83  ·  view source on GitHub ↗

SetDataOperationInTargetDataset set status of target dataset to mark the data operation being performed.

(ctx cruntime.ReconcileRequestContext, operation dataoperation.OperationInterface, engine *TemplateEngine)

Source from the content-addressed store, hash-verified

38
39// SetDataOperationInTargetDataset set status of target dataset to mark the data operation being performed.
40func SetDataOperationInTargetDataset(ctx cruntime.ReconcileRequestContext, operation dataoperation.OperationInterface, engine *TemplateEngine) error {
41 targetDataset := ctx.Dataset
42 object := operation.GetOperationObject()
43
44 // check if the bounded runtime is ready
45 ready := engine.CheckRuntimeReady()
46 if !ready {
47 ctx.Log.V(1).Info("Bounded accelerate runtime not ready", "targetDataset", targetDataset)
48 ctx.Recorder.Eventf(object,
49 v1.EventTypeNormal,
50 common.RuntimeNotReady,
51 "Bounded accelerate runtime not ready")
52 return fmt.Errorf("bounded accelerate runtime not ready")
53 }
54
55 operationTypeName := string(operation.GetOperationType())
56 dataOpKey := getDataOperationKey(object)
57
58 // set current data operation in target dataset
59 err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
60 dataset, err := utils.GetDataset(ctx.Client, targetDataset.Name, targetDataset.Namespace)
61 if err != nil {
62 return err
63 }
64
65 // set current data operation in the target dataset
66 datasetToUpdate := dataset.DeepCopy()
67 datasetToUpdate.SetDataOperationInProgress(operationTypeName, dataOpKey)
68 // different operation may set other fields
69 operation.SetTargetDatasetStatusInProgress(datasetToUpdate)
70
71 if !reflect.DeepEqual(dataset.Status, datasetToUpdate.Status) {
72 if err := ctx.Client.Status().Update(context.TODO(), datasetToUpdate); err != nil {
73 ctx.Log.Info("fail to update target dataset's lock, will requeue", "targetDatasetName", targetDataset.Name)
74 return err
75 }
76 }
77 return nil
78 })
79 if err != nil {
80 ctx.Log.Error(err, "can't set lock on target dataset", "targetDataset", targetDataset.Name)
81 }
82 return err
83}
84
85// ReleaseTargetDataset release target dataset OperationRef field which marks the data operation being performed.
86func ReleaseTargetDataset(ctx cruntime.ReconcileRequestContext, operation dataoperation.OperationInterface) error {

Callers 1

reconcilePendingMethod · 0.85

Calls 10

GetDatasetFunction · 0.92
getDataOperationKeyFunction · 0.85
UpdateMethod · 0.80
GetOperationObjectMethod · 0.65
CheckRuntimeReadyMethod · 0.65
GetOperationTypeMethod · 0.65
DeepCopyMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected