in pkg/controller/disaggregated_cluster_controller.go [194:250]
func (dc *DisaggregatedClusterReconciler) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {
var ddc dv1.DorisDisaggregatedCluster
err := dc.Get(ctx, req.NamespacedName, &ddc)
if apierrors.IsNotFound(err) {
klog.Warningf("disaggreatedClusterReconciler not find resource DorisDisaggregatedCluster namespaceName %s", req.NamespacedName)
return ctrl.Result{}, nil
}
hv := hash.HashObject(ddc.Spec)
var res ctrl.Result
var msg string
reconRes, reconErr := dc.reconcileSub(ctx, &ddc)
if reconErr != nil {
msg = msg + reconErr.Error()
}
if !reconRes.IsZero() {
res = reconRes
}
// clear unused resources.
clearRes, clearErr := dc.clearUnusedResources(ctx, &ddc)
if clearErr != nil {
msg = msg + reconErr.Error()
}
if !clearRes.IsZero() {
res = clearRes
}
//display new status.
disRes, disErr := func() (ctrl.Result, error) {
//reorganize status.
var stsRes ctrl.Result
var stsErr error
if stsRes, stsErr = dc.reorganizeStatus(&ddc); stsErr != nil {
return stsRes, stsErr
}
//update cr or status
if stsRes, stsErr = dc.updateObjectORStatus(ctx, &ddc, hv); stsErr != nil {
return stsRes, stsErr
}
return stsRes, stsErr
}()
if disErr != nil {
msg = msg + disErr.Error()
}
if !disRes.IsZero() {
res = disRes
}
if msg != "" {
return res, errors.New(msg)
}
return res, nil
}