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
}