Troubleshoot dependency synchronization
Use device status, events, and the CLI to diagnose why upstream configuration changes are not reaching devices or why sync probes report failures.
Prerequisites
- You can run the Flight Control CLI and are logged in to the Red Hat Edge Manager service.
- The device or fleet references configuration through
gitRef,httpRef, orsecretRef.
Upstream change detected but device stays out of date
- Confirm that a new template version exists for the fleet:
flightctl get templateversions --fleetname <fleet_name>Look for a sync-driven name such as
v1-8ebebaf8in addition to spec-drivenv1. - Check device update status:
flightctl get device/<device_name> -o yamlReview
status.updated.statusand fleet controller annotations such asfleet-controller/templateVersion. - List recent events on the device:
flightctl get events --field-selector 'involvedObject.kind=Device,involvedObject.name=<device_name>'Verify that
DependencyChangeDetectedis displayed after the upstream change. Inspect structured event details:flightctl get events --field-selector 'involvedObject.kind=Device,involvedObject.name=<device_name>,reason=DependencyChangeDetected' -o yaml
The event details include resourceKey and fingerprint values for the upstream resource that changed.
If a template version exists but the device remains OutOfDate, investigate agent connectivity and update errors by using Device update status and update state and Troubleshooting device error codes.
DependencySyncProbeFailed events
A DependencySyncProbeFailed warning indicates that Red Hat Edge Manager could not reach or authenticate to an upstream dependency during a sync cycle.
Common causes include:
- Invalid or expired credentials on the
Repositoryresource - Network or firewall rules blocking Git, HTTP, or the Kubernetes API
- HTTP endpoints that are unreachable or return server errors
Confirm that the repository is reachable:
flightctl get repository/<name>
The ACCESSIBLE condition should be True.
The event message is sanitized and does not include secrets. Fix the underlying repository or secret access, then wait for the next poll cycle or trigger a specification reconciliation if needed.
Inspect probe failure details:
flightctl get events --field-selector 'reason=DependencySyncProbeFailed' -o yaml
Secret informer disconnect or not running
Secret synchronization requires an in-cluster Red Hat Edge Manager deployment and a running flightctl-periodic service with permission to watch labeled secrets.
- Confirm Red Hat Edge Manager is installed in the same cluster as the secrets.
- Verify the secret label:
flightctl.io/sync-<release_namespace>: "true". - Check periodic service logs for informer or watch errors:
oc logs -n <release_namespace> deployment/flightctl-periodic --tail=200 - If you use Prometheus, check that
flightctl_dependency_sync_informer_connectedis1. A value of0indicates the informer is not connected. - Restart the
flightctl-periodicdeployment if the informer failed to start after RBAC or configuration changes.
For RBAC and labeling requirements, see Configuring synchronization in the Additional resources section.
Secret changes not detected
Verify all of the following:
- Red Hat Edge Manager is deployed in-cluster (secret informers are not started for off-cluster installations).
- The secret has the label
flightctl.io/sync-<release_namespace>: "true". - The
flightctl-periodicdeployment can list and watch secrets in the secret namespace (cluster-wide RBAC or namespaceRoleas required). - The
flightctl-workerservice account can read the secret when rendering devices.
For labeling and RBAC, see Configuring synchronization in the Additional resources section.
HTTP resources not updating
- Confirm the
Repositoryresource is accessible andACCESSIBLEisTrue:flightctl get repository/<name>. - Periodic sync uses conditional HEAD when the server returns
ETagorLast-Modified. Endpoints without those headers are not actively probed. Asha256:fingerprint is recorded when configuration is rendered, not by the sync probe. - Ensure the HTTP server returns
ETagorLast-Modifiedif you need automatic change detection between device renders. To verify response headers:curl -I <endpoint-url> - Parameterized
suffixvalues are resolved per device; only devices whose resolved URL content changed are updated.
Git commits not applied
- Verify the fleet or device references the correct
targetRevisionandpath. - Allow up to one polling interval (default 15 minutes) after pushing a commit before expecting a new template version.
- Ensure the
Repositoryis accessible from the Red Hat Edge Manager service and that credentials are valid.
Duplicate or ambiguous configuration provider names
Each config entry name in a device or fleet template must be unique. If two providers share a name, status.dependencySync.configRefs can be ambiguous and fleet reconciliation can fail.
Rename configuration providers so each name is unique, then re-apply the fleet or device specification.