Skip to content

Silent Failure and State Corruption via Ignored KRM Function Pipeline Errors in Specializers #807

@pulkitvats2007-crypto

Description

@pulkitvats2007-crypto

The reconcilers for specializers (e.g. ipam-specializer, vlan-specializer, generic-specializer, specializer-reconciler) invoke the KRM function pipeline but explicitly ignore any returned errors.

_, err = r.krmfn.Process(rl)
if err != nil {
	log.Error(err, "function run failed")
	// TBD if we need to return here + check if kptfile is set
	//return ctrl.Result{}, errors.Wrap(err, "function run failed")
}

By returning nil instead of the error, the controller signals to controller-runtime that the reconciliation was completely successful. Consequently, the controller does not requeue the request, and a transient failure (like an IPAM timeout) becomes a permanent, silent corruption. The unspecialized resources are pushed back to Porch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions