func()

in rocketmq-knative/source/pkg/controller/sdk/reconciler.go [145:188]


func (r *Reconciler) update(ctx context.Context, request reconcile.Request, object runtime.Object) (runtime.Object, error) {
	freshObj := r.provider.Parent.DeepCopyObject()
	if err := r.client.Get(ctx, request.NamespacedName, freshObj); err != nil {
		return nil, err
	}

	// Finalizers
	freshFinalizers, err := NewReflectedFinalizersAccessor(freshObj)
	if err != nil {
		return nil, err
	}
	orgFinalizers, err := NewReflectedFinalizersAccessor(object)
	if err != nil {
		return nil, err
	}
	freshFinalizers.SetFinalizers(orgFinalizers.GetFinalizers())

	if err := r.client.Update(ctx, freshObj); err != nil {
		return nil, err
	}

	// Refetch
	freshObj = r.provider.Parent.DeepCopyObject()
	if err := r.client.Get(ctx, request.NamespacedName, freshObj); err != nil {
		return nil, err
	}

	// Status
	freshStatus, err := NewReflectedStatusAccessor(freshObj)
	if err != nil {
		return nil, err
	}
	orgStatus, err := NewReflectedStatusAccessor(object)
	if err != nil {
		return nil, err
	}
	freshStatus.SetStatus(orgStatus.GetStatus())

	if err := r.client.Status().Update(ctx, freshObj); err != nil {
		return nil, err
	}

	return freshObj, nil
}