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)
}