Skip to content

Commit 4649f16

Browse files
authored
Merge branch 'main' into feat/deep-equal-before-status-update-work-applier
2 parents 40dc51c + 6511b20 commit 4649f16

File tree

13 files changed

+864
-174
lines changed

13 files changed

+864
-174
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ jobs:
139139

140140
- name: Upload logs
141141
if: always()
142-
uses: actions/upload-artifact@v5
142+
uses: actions/upload-artifact@v6
143143
with:
144144
name: e2e-logs-${{ matrix.customized-settings }}
145145
path: test/e2e/logs-${{ matrix.customized-settings }}/

.github/workflows/codespell.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313
steps:
1414
- name: Harden Runner
15-
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
15+
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
1616
with:
1717
egress-policy: audit
1818

cmd/hubagent/main.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import (
4646
"github.com/kubefleet-dev/kubefleet/cmd/hubagent/options"
4747
"github.com/kubefleet-dev/kubefleet/cmd/hubagent/workload"
4848
mcv1beta1 "github.com/kubefleet-dev/kubefleet/pkg/controllers/membercluster/v1beta1"
49+
readiness "github.com/kubefleet-dev/kubefleet/pkg/utils/informer/readiness"
50+
"github.com/kubefleet-dev/kubefleet/pkg/utils/validator"
4951
"github.com/kubefleet-dev/kubefleet/pkg/webhook"
5052
// +kubebuilder:scaffold:imports
5153
)
@@ -165,7 +167,17 @@ func main() {
165167

166168
ctx := ctrl.SetupSignalHandler()
167169
if err := workload.SetupControllers(ctx, &wg, mgr, config, opts); err != nil {
168-
klog.ErrorS(err, "unable to set up ready check")
170+
klog.ErrorS(err, "unable to set up controllers")
171+
exitWithErrorFunc()
172+
}
173+
174+
// Add readiness check for dynamic informer cache AFTER controllers are set up.
175+
// This ensures the discovery cache is populated before the hub agent is marked ready,
176+
// which is critical for all controllers that rely on dynamic resource discovery.
177+
// AddReadyzCheck adds additional readiness check instead of replacing the one registered earlier provided the name is different.
178+
// Both registered checks need to pass for the manager to be considered ready.
179+
if err := mgr.AddReadyzCheck("informer-cache", readiness.InformerReadinessChecker(validator.ResourceInformer)); err != nil {
180+
klog.ErrorS(err, "unable to set up informer cache readiness check")
169181
exitWithErrorFunc()
170182
}
171183

pkg/controllers/membercluster/v1beta1/membercluster_controller.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,8 +515,18 @@ func (r *Reconciler) syncInternalMemberClusterStatus(imc *clusterv1beta1.Interna
515515
}
516516

517517
// TODO: We didn't handle condition type: clusterv1beta1.ConditionTypeMemberClusterHealthy.
518-
// Copy Agent status.
519-
mc.Status.AgentStatus = imc.Status.AgentStatus
518+
// Copy Agent status and set ObservedGeneration for agent conditions.
519+
if len(imc.Status.AgentStatus) > 0 {
520+
mc.Status.AgentStatus = make([]clusterv1beta1.AgentStatus, len(imc.Status.AgentStatus))
521+
}
522+
for i := range imc.Status.AgentStatus {
523+
mc.Status.AgentStatus[i] = *imc.Status.AgentStatus[i].DeepCopy()
524+
// Set ObservedGeneration for each agent condition.
525+
for j := range mc.Status.AgentStatus[i].Conditions {
526+
mc.Status.AgentStatus[i].Conditions[j].ObservedGeneration = mc.GetGeneration()
527+
}
528+
}
529+
520530
r.aggregateJoinedCondition(mc)
521531
// Copy resource usages.
522532
mc.Status.ResourceUsage = imc.Status.ResourceUsage

0 commit comments

Comments
 (0)