From 33f8e7caea28be7dfd1d68de717b75453ea267ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Thu, 10 Sep 2026 14:00:10 +0200 Subject: [PATCH] test: deflake ComplexWorkflowIT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The test timed out waiting for the workflow to report READY. Its StatefulSets ran mongo:4.4 with a 1Gi volumeClaimTemplate, so the ready postcondition (readyReplicas > 0) depended on a ~400MB Docker Hub pull plus PVC provisioning completing inside the 120s budget. In the failing CI run the first StatefulSet's status never changed after creation, so `second` never unblocked and the status stayed NOT_READY. Swap the workload for registry.k8s.io/pause:3.9 and drop the volume claim template. The pod has no readiness probe, so it is ready as soon as it runs, and the image is ~700KB from a registry without anonymous pull rate limits. Also remove the orphaned copies of these templates under resources/io/javaoperatorsdk/operator/sample/complexdependent, left behind when the test classes moved to the workflow package; nothing referenced them. Signed-off-by: Attila Mészáros --- .../dependent/BaseStatefulSet.java | 5 -- .../complexdependent/dependent/service.yaml | 32 ---------- .../dependent/statefulset.yaml | 62 ------------------- .../workflow/complexdependent/service.yaml | 12 ++-- .../complexdependent/statefulset.yaml | 37 +++-------- 5 files changed, 13 insertions(+), 135 deletions(-) delete mode 100644 operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/service.yaml delete mode 100644 operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/statefulset.yaml diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/dependent/BaseStatefulSet.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/dependent/BaseStatefulSet.java index 1e4aa73e80..8b8d6e0087 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/dependent/BaseStatefulSet.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/workflow/complexdependent/dependent/BaseStatefulSet.java @@ -49,11 +49,6 @@ protected StatefulSet desired( .editTemplate() .withMetadata(metadata) .endTemplate() - .editFirstVolumeClaimTemplate() - .editMetadata() - .withLabels(Map.of(K8S_NAME, name)) - .endMetadata() - .endVolumeClaimTemplate() .endSpec() .build(); } diff --git a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/service.yaml b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/service.yaml deleted file mode 100644 index c5360ab743..0000000000 --- a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/service.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright Java Operator SDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -apiVersion: v1 -kind: Service -metadata: - name: mongo-template - labels: - app.kubernetes.io/name: mongo-template - app.kubernetes.io/component: first-or-second -spec: - type: ClusterIP - selector: - app.kubernetes.io/name: mongo-template - clusterIP: None - ports: - - name: mongodb - port: 27017 - targetPort: 27017 \ No newline at end of file diff --git a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/statefulset.yaml b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/statefulset.yaml deleted file mode 100644 index 40187ebf03..0000000000 --- a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/sample/complexdependent/dependent/statefulset.yaml +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright Java Operator SDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: mongo-template - labels: - app.kubernetes.io/name: mongo-template - app.kubernetes.io/component: first-or-second -spec: - serviceName: mongo-template - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: mongo-template - template: - metadata: - labels: - app.kubernetes.io/name: mongo-template - app.kubernetes.io/component: first-or-second - spec: - terminationGracePeriodSeconds: 10 - containers: - - name: mongo - image: mongo:4.4 - ports: - - name: mongodb - containerPort: 27017 - volumeMounts: - - name: data - mountPath: /data/db - volumeClaimTemplates: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: data - labels: - app.kubernetes.io/name: mongo-template - spec: - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - limits: - storage: 50Gi - diff --git a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/service.yaml b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/service.yaml index c5360ab743..5b38fe3956 100644 --- a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/service.yaml +++ b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/service.yaml @@ -17,16 +17,16 @@ apiVersion: v1 kind: Service metadata: - name: mongo-template + name: service-template labels: - app.kubernetes.io/name: mongo-template + app.kubernetes.io/name: service-template app.kubernetes.io/component: first-or-second spec: type: ClusterIP selector: - app.kubernetes.io/name: mongo-template + app.kubernetes.io/name: service-template clusterIP: None ports: - - name: mongodb - port: 27017 - targetPort: 27017 \ No newline at end of file + - name: web + port: 80 + targetPort: 80 \ No newline at end of file diff --git a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/statefulset.yaml b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/statefulset.yaml index 40187ebf03..b0d4f75152 100644 --- a/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/statefulset.yaml +++ b/operator-framework/src/test/resources/io/javaoperatorsdk/operator/workflow/complexdependent/statefulset.yaml @@ -17,46 +17,23 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: mongo-template + name: statefulset-template labels: - app.kubernetes.io/name: mongo-template + app.kubernetes.io/name: statefulset-template app.kubernetes.io/component: first-or-second spec: - serviceName: mongo-template + serviceName: statefulset-template replicas: 1 selector: matchLabels: - app.kubernetes.io/name: mongo-template + app.kubernetes.io/name: statefulset-template template: metadata: labels: - app.kubernetes.io/name: mongo-template + app.kubernetes.io/name: statefulset-template app.kubernetes.io/component: first-or-second spec: terminationGracePeriodSeconds: 10 containers: - - name: mongo - image: mongo:4.4 - ports: - - name: mongodb - containerPort: 27017 - volumeMounts: - - name: data - mountPath: /data/db - volumeClaimTemplates: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: data - labels: - app.kubernetes.io/name: mongo-template - spec: - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - limits: - storage: 50Gi - + - name: pause + image: registry.k8s.io/pause:3.9