func()

in pkg/controller/doriscluster_controller.go [117:173]


func (r *DorisClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
	klog.FromContext(ctx)
	klog.Info("DorisClusterReconciler reconcile the update crd name ", req.Name, " namespace ", req.Namespace)
	var edcr dorisv1.DorisCluster
	err := r.Client.Get(ctx, req.NamespacedName, &edcr)
	if apierrors.IsNotFound(err) {
		return ctrl.Result{}, nil
	}

	if err != nil && !apierrors.IsNotFound(err) {
		klog.Error(err, " the req kind is not exists ", req.NamespacedName, " name ", req.Name)
		return requeueIfError(err)
	}

	dcr := edcr.DeepCopy()

	if !dcr.DeletionTimestamp.IsZero() {
		r.resourceClean(ctx, dcr)
		return ctrl.Result{}, nil
	}

	if dcr.Spec.EnableRestartWhenConfigChange {
		coreConfigMaps := resource.GetDorisCoreConfigMapNames(dcr)
		for componentType := range coreConfigMaps {
			cmnn := types.NamespacedName{Namespace: dcr.Namespace, Name: coreConfigMaps[componentType]}
			dcrnn := types.NamespacedName{Namespace: dcr.Namespace, Name: dcr.Name}
			r.WatchConfigMaps[cmnn.String()] = dcrnn.String()
		}
	}

	//subControllers reconcile for create or update sub resource.
	for _, rc := range r.Scs {
		if err := rc.Sync(ctx, dcr); err != nil {
			klog.Error("DorisClusterReconciler reconcile ", " sub resource reconcile failed ", "namespace: ", dcr.Namespace, " name: ", dcr.Name, " controller: ", rc.GetControllerName(), " error: ", err)
			return requeueIfError(err)
		}
	}

	//generate the dcr status.
	r.clearNoEffectResources(ctx, dcr)
	for _, rc := range r.Scs {
		//update component status.

		if err := rc.UpdateComponentStatus(dcr); err != nil {
			klog.Errorf("DorisClusterReconciler reconcile update component %s status failed.err=%s\n", rc.GetControllerName(), err.Error())
			return requeueIfError(err)
		}
	}

	//if dcr has updated by doris operator, should update it in apiserver. if not ignore it.
	if err = r.revertDorisClusterSomeFields(ctx, &edcr, dcr); err != nil {
		klog.Errorf("DorisClusterReconciler updateDorisClusterToOld update dorisCluster namespace=%s, name=%s failed, err=%s", dcr.Namespace, dcr.Name, err.Error())
		return requeueIfError(err)
	}

	return r.updateDorisClusterStatus(ctx, dcr)
}