Uploaded image for project: 'Red Hat Advanced Cluster Management'
  1. Red Hat Advanced Cluster Management
  2. ACM-27300

Long delay to deploy an Application from the user console.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • None
    • None
    • Incidents & Support
    • False
    • Hide

      None

      Show
      None
    • False
    • Important
    • None

      Description of problem:

      When creating an application from the user console, it takes about 3 minutes before the actual Application.argoproj.io resource is created and ArgoCD start deploying the application. This happens when the ApplicationSet and Placement resource are created at the same time (see debug output below).

      This long delay gives a bad user experience to customers who are trying out the solution, running tests, or watching a demo. 

      Version-Release number of selected component (if applicable):

      OCP 4.19.1
      ACM 2.14.1
      OpenShift GitOps 1.18.1 (Argo v3.1.8)

      How reproducible:

      100%

      Steps to Reproduce:

      1. Go to the user console, create an application using "Argo CD Applicationset - Push model"
      2. Give it a name, select an Argo server
      3. Set Requeue time to 30 seconds (it doesn't influence the 3 minute delay)
      4. Use any application in git (for example https://github.com/red-hat-storage/ocm-ramen-samples, main branch path workloads/deployment/odr-metro-dr)
      5. Create a new placement, select a ClusterSet, and use a label selector to select one cluster
      6. Monitor the creation of application.argoproj.io

      Actual results:

      It takes exactly three minutes before this resource is created.

      Expected results:

      The application.argoproj.io to be created in a few seconds.

      Additional info:

      The Placement and PlacementDecision resources are created immediately:

       

      % oc get placement myapp-placement -o yaml  | grep creationTime 
        creationTimestamp: "2025-12-05T15:16:50Z" 
      
      % oc get placementdecision myapp-placement-decision-1 -o yaml  | grep creationTime 
        creationTimestamp: "2025-12-05T15:16:50Z"

       

      from the placement controller logs:

      I1205 15:16:50.775298 1 event_broadcaster.go:338] "Event occurred" object="openshift-gitops/myapp-placement" kind="Placement" apiVersion="cluster.open-cluster-management.io/v1beta1" type="Normal" reason="DecisionCreate" action="DecisionCreated" note="Decision myapp-placement-decision-1 is created with placement myapp-placement in namespace openshift-gitops"
      
      I1205 15:16:50.794774 1 event_broadcaster.go:338] "Event occurred" object="openshift-gitops/myapp-placement" kind="Placement" apiVersion="cluster.open-cluster-management.io/v1beta1" type="Normal" reason="DecisionUpdate" action="DecisionUpdated" note="Decision myapp-placement-decision-1 is updated with placement myapp-placement in namespace openshift-gitops"
      
      I1205 15:16:50.794830 1 event_broadcaster.go:338] "Event occurred" object="openshift-gitops/myapp-placement" kind="Placement" apiVersion="cluster.open-cluster-management.io/v1beta1" type="Normal" reason="ScoreUpdate" action="ScoreUpdated" note="metrodr1:30 " 

       

      The ApplicationSet controller just throws an error that it cannot find the clusterDecisionResources. This might be a race condition with the placement controller.

      time="2025-12-05T15:16:50Z" level=error msg="error generating params" error="no clusterDecisionResources found" generator="&{{{}} 0xc0012c5680 0xc00170b340 openshift-gitops}"
      
      time="2025-12-05T15:16:50Z" level=error msg="error generating application from params" applicationset=openshift-gitops/myapp error="no clusterDecisionResources found" generator="{nil nil nil nil &DuckTypeGenerator{ConfigMapRef:acm-placement,Name:,RequeueAfterSeconds:*30,LabelSelector:{map[cluster.open-cluster-management.io/placement:myapp-placement] []},Template:ApplicationSetTemplate{ApplicationSetTemplateMeta:ApplicationSetTemplateMeta{Name:,Namespace:,Labels:map[string]string{},Annotations:map[string]string{},Finalizers:[],},Spec:ApplicationSpec{Source:nil,Destination:ApplicationDestination{Server:,Namespace:,Name:,},Project:,SyncPolicy:nil,IgnoreDifferences:[]ResourceIgnoreDifferences{},Info:[]Info{},RevisionHistoryLimit:nil,Sources:[]ApplicationSource{},SourceHydrator:nil,},},Values:map[string]string{},} nil nil nil nil nil}"
      
      time="2025-12-05T15:16:50Z" level=error msg="unable to generate applications: no clusterDecisionResources found" applicationset=openshift-gitops/myapp 

       

      Three minutes later, the Application is created:

      time="2025-12-05T15:19:50Z" level=info msg="Kind.Group/Version Reference" kind.apiVersion=placementdecisions.cluster.open-cluster-management.io/v1beta1
      time="2025-12-05T15:19:50Z" level=info msg="selection type" listOptions.LabelSelector="cluster.open-cluster-management.io/placement=myapp-placement"
      time="2025-12-05T15:19:50Z" level=info msg="Number of decisions found: 1" 

       

      Simply annotating the ApplicationSet after it was created triggers a reconciliation

      % kubectl annotate applicationset test -n openshift-gitops  "force-refresh=$(date +%s)" --overwrite
      

       

       

              fxiang@redhat.com Feng Xiang
              ddemoiti Dieter De Moitie
              David Huynh David Huynh
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated: