Cluster service disappeared after yaml config change

Hey team, we are working on a poc to run ClickHouse clusters with this operator, our Kubernetes cluster is hosted on AWS EKS.
The following yaml config for ClickHouse cluster was used:
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
  name: "small"
spec:
  defaults:
    templates:
      podTemplate: clickhouse
      dataVolumeClaimTemplate: data-volume-clickhouse
      logVolumeClaimTemplate: data-volume-clickhouse
  configuration:
    files:
      config.d/override_config.xml: |-
        <clickhouse>
          <logger>
            <level>information</level>
          </logger>
        </clickhouse>
    clusters:
      - name: "small-cluster"
        layout:
          shardsCount: 2
          replicasCount: 2
    zookeeper:
      nodes:
        - host: zookeeper.ch-zookeeper
          port: 2181
    users:
      default/networks/ip: "::/0"
      test/password: password
      test/networks/ip: "::/0"
      test/grants/query:
        - "GRANT SHOW ON *.*"
        - "GRANT CREATE ON *.* WITH GRANT OPTION"
        - "GRANT SELECT ON system.*"
-    admin/password: admin
+    admin/password: password
      admin/networks/ip: "::/0"
      admin/grants/query:
        - "GRANT SHOW ON *.*"
        - "GRANT CREATE ON *.* WITH GRANT OPTION"
        - "GRANT SELECT ON system.*"
  templates:
    podTemplates:
      - name: clickhouse
        spec:
          securityContext:
            runAsUser: 101
            runAsGroup: 101
            fsGroup: 101
          containers:
            - name: clickhouse
              image: clickhouse/clickhouse-server:23.3.8
              ports:
                - name: http
                  containerPort: 8123
                - name: client
                  containerPort: 9000
                - name: interserver
                  containerPort: 9009
              volumeMounts:
                - name: data-volume-clickhouse
                  mountPath: /var/lib/clickhouse
                - name: data-volume-clickhouse
                  mountPath: /var/log/clickhouse-server
          nodeSelector:
            node.kubernetes.io/instance-type: m5.xlarge
    volumeClaimTemplates:
      - name: data-volume-clickhouse
        reclaimPolicy: Retain
        spec:
          storageClassName: ebs-csi
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 10Gi

After a small change to the password of admin account(see the changes above), the service for this ClickHouse cluster disappeared
➜ kubectl get all -n clickhouse-operator
NAME                                       READY   STATUS    RESTARTS   AGE
pod/chi-small-small-cluster-0-0-0          2/2     Running   0          44h
pod/chi-small-small-cluster-0-1-0          2/2     Running   0          44h
pod/chi-small-small-cluster-1-0-0          2/2     Running   0          44h
pod/chi-small-small-cluster-1-1-0          2/2     Running   0          44h
pod/clickhouse-operator-7b7fb5dc7b-qqfrv   2/2     Running   0          12d

NAME                                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/chi-small-small-cluster-0-0   ClusterIP   None           <none>        9000/TCP,8123/TCP,9009/TCP   3d3h
service/chi-small-small-cluster-0-1   ClusterIP   None           <none>        9000/TCP,8123/TCP,9009/TCP   3d3h
service/chi-small-small-cluster-1-0   ClusterIP   None           <none>        9000/TCP,8123/TCP,9009/TCP   3d3h
service/chi-small-small-cluster-1-1   ClusterIP   None           <none>        9000/TCP,8123/TCP,9009/TCP   3d3h
service/clickhouse-operator-metrics   ClusterIP   <IP_ADDRESS>   <none>        8888/TCP                     13d

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/clickhouse-operator   1/1     1            1           13d

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/clickhouse-operator-7b7fb5dc7b   1         1         1       13d

NAME                                           READY   AGE
statefulset.apps/chi-small-small-cluster-0-0   1/1     3d3h
statefulset.apps/chi-small-small-cluster-0-1   1/1     3d3h
statefulset.apps/chi-small-small-cluster-1-0   1/1     3d3h
statefulset.apps/chi-small-small-cluster-1-1   1/1     3d3h

Also tried the fetching logs from the operator pod with command kubectl logs clickhouse-operator-7b7fb5dc7b-qqfrv -n clickhouse-operator --since=30m
I0731 00:27:38.972777       1 controller.go:565] ENQUEUE new ReconcileCHI cmd=update for clickhouse-operator/small
I0731 00:27:38.984358       1 worker.go:379] worker.go:379:updateCHI():start:clickhouse-operator/small
I0731 00:27:38.996889       1 worker.go:421] Operator IPs. Previous: <IP_ADDRESS> Cur: <IP_ADDRESS>
I0731 00:27:38.996928       1 worker.go:430] Operator IPs are the same. It is restart on the same IP
I0731 00:27:38.998391       1 worker.go:438] Operator is not just started. May not be clean restart
I0731 00:27:39.025882       1 worker-reconciler.go:51] worker-reconciler.go:51:reconcileCHI():start:clickhouse-operator/small
I0731 00:27:39.025943       1 worker-reconciler.go:55] reconcileCHI():clickhouse-operator/small:has ancestor, use it as a base for reconcile
I0731 00:27:39.076150       1 worker.go:289] clickhouse-operator/small/a6b301b0-0e38-45e5-90a2-1a151b0243ba:IPs of the CHI clickhouse-operator/small: [<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]
I0731 00:27:39.114031       1 worker.go:289] clickhouse-operator/small/53db23f8-4240-461b-9375-4bd840a39118:IPs of the CHI clickhouse-operator/small: [<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]
I0731 00:27:39.137849       1 worker.go:519] ActionPlan start---------------------------------------------:
AP item start -------------------------
removed spec items: 4
ap item path [0]:'.Configuration.Users["default/networks/ip"].vector[8]'
ap item value[0]:'"<IP_ADDRESS>"'
ap item path [1]:'.Configuration.Users["default/networks/ip"].vector[9]'
ap item value[1]:'"<IP_ADDRESS>"'
ap item path [2]:'.Configuration.Users["default/networks/ip"].vector[10]'
ap item value[2]:'"::/0"'
ap item path [3]:'.Configuration.Users["default/networks/ip"].vector[7]'
ap item value[3]:'"<IP_ADDRESS>"'
AP item end -------------------------AP item start -------------------------
modified spec items: 3
ap item path [0]:'.Configuration.Users["admin/password_sha256_hex"].scalar'
ap item value[0]:'"5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"'
ap item path [1]:'.TaskID'
ap item value[1]:'"04a5fa26-4934-4bf9-a93f-b1b0364db208"'
ap item path [2]:'.Configuration.Users["default/networks/ip"].vector[6]'
ap item value[2]:'"::/0"'
AP item end -------------------------
ActionPlan end---------------------------------------------
I0731 00:27:39.137958       1 worker-reconciler.go:69] reconcileCHI():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:ActionPlan has actions - continue reconcile
I0731 00:27:39.481431       1 worker.go:597] markReconcileStart():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:reconcile started, task id: 04a5fa26-4934-4bf9-a93f-b1b0364db208
I0731 00:27:41.261306       1 worker.go:742] FOUND host: ns:clickhouse-operator|chi:small|clu:small-cluster|sha:0|rep:0|host:0-0
I0731 00:27:41.261336       1 worker.go:742] FOUND host: ns:clickhouse-operator|chi:small|clu:small-cluster|sha:0|rep:1|host:0-1
I0731 00:27:41.261350       1 worker.go:742] FOUND host: ns:clickhouse-operator|chi:small|clu:small-cluster|sha:1|rep:0|host:1-0
I0731 00:27:41.261364       1 worker.go:742] FOUND host: ns:clickhouse-operator|chi:small|clu:small-cluster|sha:1|rep:1|host:1-1
I0731 00:27:41.261424       1 worker.go:770] RemoteServersGeneratorOptions: exclude hosts: [], attributes: status: , add: true, remove: false, modify: false, found: false, excluded host(s):
I0731 00:27:41.451998       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:27:42.657332       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-usersd
I0731 00:27:43.688741       1 creator.go:113] CreateServiceCluster():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/cluster-small-small-cluster
I0731 00:27:43.702621       1 worker-reconciler.go:566] PDB updated clickhouse-operator/small-small-cluster
I0731 00:27:43.702716       1 creator.go:136] CreateServiceShard():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/shard-small-small-cluster-0
I0731 00:27:43.702772       1 worker-reconciler.go:498] reconcileHost():Reconcile Host 0-0 started
I0731 00:27:44.680842       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-0-0 use custom template: clickhouse
I0731 00:27:44.681342       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-0-0
W0731 00:27:44.681371       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:44.681449       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:44.681530       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:27:44.685384       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-0-0:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-0-0
I0731 00:27:44.685492       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 0-0
I0731 00:27:44.685555       1 worker.go:976] shouldExcludeHost():The same host would not be updated host 0 shard 0 cluster small-cluster
I0731 00:27:44.851510       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-deploy-confd-small-cluster-0-0
I0731 00:27:47.654714       1 cluster.go:84] Run query on: chi-small-small-cluster-0-0.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-0-0.clickhouse-operator.svc.cluster.local]
I0731 00:27:47.677452       1 worker-reconciler.go:292] reconcileHostStatefulSet():Reconcile host 0-0. ClickHouse version: <IP_ADDRESS>
I0731 00:27:47.677622       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 0-0
I0731 00:27:47.677651       1 worker-reconciler.go:304] reconcileHostStatefulSet():Reconcile host 0-0. Reconcile StatefulSet
I0731 00:27:47.677752       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-0-0 use custom template: clickhouse
I0731 00:27:47.677868       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-0-0
W0731 00:27:47.677885       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:47.677895       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:47.677913       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:27:47.678999       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-0-0:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-0-0
I0731 00:27:49.452987       1 creator.go:160] CreateServiceHost():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/chi-small-small-cluster-0-0 for Set chi-small-small-cluster-0-0
I0731 00:27:49.653751       1 worker.go:1201] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/chi-small-small-cluster-0-0
I0731 00:27:50.683030       1 worker.go:800] migrateTables():No need to add tables on host 0 to shard 0 in cluster small-cluster
I0731 00:27:50.683096       1 cluster.go:84] Run query on: chi-small-small-cluster-0-0.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-0-0.clickhouse-operator.svc.cluster.local]
I0731 00:27:50.691506       1 worker.go:885] includeHost():Include into cluster host 0 shard 0 cluster small-cluster
I0731 00:27:50.691593       1 worker.go:770] RemoteServersGeneratorOptions: exclude hosts: [], attributes: status: , add: true, remove: false, modify: false, found: false, excluded host(s):
I0731 00:27:50.851412       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:27:52.052760       1 worker-reconciler.go:537] reconcileHost():Reconcile Host 0-0 completed. ClickHouse version running: <IP_ADDRESS>
I0731 00:27:53.093114       1 worker-reconciler.go:553] reconcileHost():ProgressHostsCompleted: 1 of 4
I0731 00:27:54.078428       1 creator.go:58] CreateServiceCHI():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/clickhouse-small
I0731 00:27:54.078773       1 worker.go:1164] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:reuse Port 8123 values
I0731 00:27:54.078802       1 worker.go:1164] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:reuse Port 9000 values
E0731 00:27:54.258470       1 worker.go:1207] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/clickhouse-small failed with error Service "clickhouse-small" is invalid: spec.loadBalancerClass: Invalid value: "null": may not change once set
I0731 00:27:55.660814       1 deleter.go:327] clickhouse-operator/clickhouse-small:OK delete Service clickhouse-operator/clickhouse-small
E0731 00:27:55.858509       1 worker.go:1232] createService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Create Service clickhouse-operator/clickhouse-small failed with error Service "clickhouse-small" is invalid: spec.clusterIPs: Invalid value: []string{"<IP_ADDRESS>"}: failed to allocate IP <IP_ADDRESS>: provided IP is already allocated
E0731 00:27:56.875412       1 worker-reconciler.go:661] reconcileService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:FAILED to reconcile Service: clickhouse-small CHI: small
I0731 00:27:57.884052       1 worker-reconciler.go:498] reconcileHost():Reconcile Host 0-1 started
I0731 00:27:58.883456       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-0-1 use custom template: clickhouse
I0731 00:27:58.883619       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-0-1
W0731 00:27:58.883643       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:58.883741       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:27:58.883775       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:27:58.885180       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-0-1:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-0-1
I0731 00:27:58.885289       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 0-1
I0731 00:27:58.885326       1 worker.go:976] shouldExcludeHost():The same host would not be updated host 1 shard 0 cluster small-cluster
I0731 00:27:59.049373       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-deploy-confd-small-cluster-0-1
I0731 00:28:01.856959       1 cluster.go:84] Run query on: chi-small-small-cluster-0-1.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-0-1.clickhouse-operator.svc.cluster.local]
I0731 00:28:01.873235       1 worker-reconciler.go:292] reconcileHostStatefulSet():Reconcile host 0-1. ClickHouse version: <IP_ADDRESS>
I0731 00:28:01.873421       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 0-1
I0731 00:28:01.873454       1 worker-reconciler.go:304] reconcileHostStatefulSet():Reconcile host 0-1. Reconcile StatefulSet
I0731 00:28:01.873587       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-0-1 use custom template: clickhouse
I0731 00:28:01.873741       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-0-1
W0731 00:28:01.873763       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:01.873780       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:01.875332       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:28:01.879590       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-0-1:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-0-1
I0731 00:28:03.656715       1 creator.go:160] CreateServiceHost():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/chi-small-small-cluster-0-1 for Set chi-small-small-cluster-0-1
I0731 00:28:03.862537       1 worker.go:1201] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/chi-small-small-cluster-0-1
I0731 00:28:04.884155       1 worker.go:800] migrateTables():No need to add tables on host 1 to shard 0 in cluster small-cluster
I0731 00:28:04.884208       1 cluster.go:84] Run query on: chi-small-small-cluster-0-1.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-0-1.clickhouse-operator.svc.cluster.local]
I0731 00:28:04.893853       1 worker.go:885] includeHost():Include into cluster host 1 shard 0 cluster small-cluster
I0731 00:28:04.893881       1 worker.go:770] RemoteServersGeneratorOptions: exclude hosts: [], attributes: status: , add: true, remove: false, modify: false, found: false, excluded host(s):
I0731 00:28:05.054595       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:28:06.260788       1 worker-reconciler.go:537] reconcileHost():Reconcile Host 0-1 completed. ClickHouse version running: <IP_ADDRESS>
I0731 00:28:07.277021       1 worker-reconciler.go:553] reconcileHost():ProgressHostsCompleted: 2 of 4
I0731 00:28:08.280860       1 creator.go:136] CreateServiceShard():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/shard-small-small-cluster-1
I0731 00:28:08.280934       1 worker-reconciler.go:498] reconcileHost():Reconcile Host 1-0 started
I0731 00:28:09.277733       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-1-0 use custom template: clickhouse
I0731 00:28:09.278134       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-1-0
W0731 00:28:09.278176       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:09.278195       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:09.278223       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:28:09.279835       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-1-0:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-1-0
I0731 00:28:09.280002       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 1-0
I0731 00:28:09.280036       1 worker.go:976] shouldExcludeHost():The same host would not be updated host 0 shard 1 cluster small-cluster
I0731 00:28:09.457052       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-deploy-confd-small-cluster-1-0
I0731 00:28:12.253413       1 cluster.go:84] Run query on: chi-small-small-cluster-1-0.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-1-0.clickhouse-operator.svc.cluster.local]
I0731 00:28:12.268758       1 worker-reconciler.go:292] reconcileHostStatefulSet():Reconcile host 1-0. ClickHouse version: <IP_ADDRESS>
I0731 00:28:12.268866       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 1-0
I0731 00:28:12.268897       1 worker-reconciler.go:304] reconcileHostStatefulSet():Reconcile host 1-0. Reconcile StatefulSet
I0731 00:28:12.269040       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-1-0 use custom template: clickhouse
I0731 00:28:12.269203       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-1-0
W0731 00:28:12.269229       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:12.269244       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:12.269268       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:28:12.270487       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-1-0:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-1-0
I0731 00:28:14.054779       1 creator.go:160] CreateServiceHost():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/chi-small-small-cluster-1-0 for Set chi-small-small-cluster-1-0
I0731 00:28:14.256014       1 worker.go:1201] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/chi-small-small-cluster-1-0
I0731 00:28:15.279187       1 worker.go:800] migrateTables():No need to add tables on host 0 to shard 1 in cluster small-cluster
I0731 00:28:15.279241       1 cluster.go:84] Run query on: chi-small-small-cluster-1-0.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-1-0.clickhouse-operator.svc.cluster.local]
I0731 00:28:15.284992       1 worker.go:885] includeHost():Include into cluster host 0 shard 1 cluster small-cluster
I0731 00:28:15.285016       1 worker.go:770] RemoteServersGeneratorOptions: exclude hosts: [], attributes: status: , add: true, remove: false, modify: false, found: false, excluded host(s):
I0731 00:28:15.452334       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:28:16.656793       1 worker-reconciler.go:537] reconcileHost():Reconcile Host 1-0 completed. ClickHouse version running: <IP_ADDRESS>
I0731 00:28:17.683348       1 worker-reconciler.go:553] reconcileHost():ProgressHostsCompleted: 3 of 4
I0731 00:28:18.685551       1 worker-reconciler.go:498] reconcileHost():Reconcile Host 1-1 started
I0731 00:28:19.688692       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-1-1 use custom template: clickhouse
I0731 00:28:19.688844       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-1-1
W0731 00:28:19.688857       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:19.688865       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:19.688881       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:28:19.690047       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-1-1:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-1-1
I0731 00:28:19.690174       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 1-1
I0731 00:28:19.690286       1 worker.go:976] shouldExcludeHost():The same host would not be updated host 1 shard 1 cluster small-cluster
I0731 00:28:19.850760       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-deploy-confd-small-cluster-1-1
I0731 00:28:22.654336       1 cluster.go:84] Run query on: chi-small-small-cluster-1-1.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-1-1.clickhouse-operator.svc.cluster.local]
I0731 00:28:22.666019       1 worker-reconciler.go:292] reconcileHostStatefulSet():Reconcile host 1-1. ClickHouse version: <IP_ADDRESS>
I0731 00:28:22.666131       1 worker.go:134] shouldForceRestartHost():Force restart is not required. Host: 1-1
I0731 00:28:22.666192       1 worker-reconciler.go:304] reconcileHostStatefulSet():Reconcile host 1-1. Reconcile StatefulSet
I0731 00:28:22.666487       1 creator.go:589] getPodTemplate():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:statefulSet chi-small-small-cluster-1-1 use custom template: clickhouse
I0731 00:28:22.666668       1 creator.go:575] setupLogContainer():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add log container for statefulSet chi-small-small-cluster-1-1
W0731 00:28:22.666689       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:22.666711       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse volumeMount.Name:data-volume-clickhouse already used
W0731 00:28:22.666732       1 creator.go:994] containerAppendVolumeMount():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:container.Name:clickhouse-log volumeMount.Name:data-volume-clickhouse already used
I0731 00:28:22.667709       1 worker.go:1277] getStatefulSetStatus():clickhouse-operator/chi-small-small-cluster-1-1:cur and new StatefulSets ARE EQUAL based on labels. No StatefulSet reconcile is required for: clickhouse-operator/chi-small-small-cluster-1-1
I0731 00:28:24.452173       1 creator.go:160] CreateServiceHost():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:clickhouse-operator/chi-small-small-cluster-1-1 for Set chi-small-small-cluster-1-1
I0731 00:28:24.651974       1 worker.go:1201] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/chi-small-small-cluster-1-1
I0731 00:28:25.688894       1 worker.go:800] migrateTables():No need to add tables on host 1 to shard 1 in cluster small-cluster
I0731 00:28:25.688951       1 cluster.go:84] Run query on: chi-small-small-cluster-1-1.clickhouse-operator.svc.cluster.local of [chi-small-small-cluster-1-1.clickhouse-operator.svc.cluster.local]
I0731 00:28:25.697995       1 worker.go:885] includeHost():Include into cluster host 1 shard 1 cluster small-cluster
I0731 00:28:25.698015       1 worker.go:770] RemoteServersGeneratorOptions: exclude hosts: [], attributes: status: , add: true, remove: false, modify: false, found: false, excluded host(s):
I0731 00:28:25.851927       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:28:27.051398       1 worker-reconciler.go:537] reconcileHost():Reconcile Host 1-1 completed. ClickHouse version running: <IP_ADDRESS>
I0731 00:28:28.079246       1 worker-reconciler.go:553] reconcileHost():ProgressHostsCompleted: 4 of 4
I0731 00:28:29.252453       1 worker.go:1089] updateConfigMap():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update ConfigMap clickhouse-operator/chi-small-common-configd
I0731 00:28:30.283238       1 worker-reconciler.go:103] reconcileCHI():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:remove items scheduled for deletion
I0731 00:28:31.281336       1 worker-deleter.go:37] clean():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Failed to reconcile objects:
Service: clickhouse-operator/clickhouse-small
I0731 00:28:31.281392       1 worker-deleter.go:38] clean():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Reconciled objects:
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-1-1
ConfigMap: clickhouse-operator/chi-small-common-configd
ConfigMap: clickhouse-operator/chi-small-common-usersd
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-0-0
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-0-1
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-1-0
PDB: clickhouse-operator/small-small-cluster
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-0-0-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-0-1-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-1-0-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-1-1-0
StatefulSet: clickhouse-operator/chi-small-small-cluster-0-0
StatefulSet: clickhouse-operator/chi-small-small-cluster-0-1
StatefulSet: clickhouse-operator/chi-small-small-cluster-1-0
StatefulSet: clickhouse-operator/chi-small-small-cluster-1-1
Service: clickhouse-operator/chi-small-small-cluster-0-0
Service: clickhouse-operator/chi-small-small-cluster-0-1
Service: clickhouse-operator/chi-small-small-cluster-1-0
Service: clickhouse-operator/chi-small-small-cluster-1-1
I0731 00:28:32.060765       1 worker-deleter.go:41] clean():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Existing objects:
StatefulSet: clickhouse-operator/chi-small-small-cluster-1-1
StatefulSet: clickhouse-operator/chi-small-small-cluster-0-0
StatefulSet: clickhouse-operator/chi-small-small-cluster-0-1
StatefulSet: clickhouse-operator/chi-small-small-cluster-1-0
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-0-0
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-0-1
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-1-0
ConfigMap: clickhouse-operator/chi-small-deploy-confd-small-cluster-1-1
ConfigMap: clickhouse-operator/chi-small-common-configd
ConfigMap: clickhouse-operator/chi-small-common-usersd
Service: clickhouse-operator/chi-small-small-cluster-0-0
Service: clickhouse-operator/chi-small-small-cluster-0-1
Service: clickhouse-operator/chi-small-small-cluster-1-0
Service: clickhouse-operator/chi-small-small-cluster-1-1
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-0-0-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-0-1-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-1-0-0
PVC: clickhouse-operator/data-volume-clickhouse-chi-small-small-cluster-1-1-0
PDB: clickhouse-operator/small-small-cluster
I0731 00:28:32.060884       1 worker-deleter.go:43] clean():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Non-reconciled objects:
I0731 00:28:32.060917       1 worker-deleter.go:53] clean():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:remove items scheduled for deletion
I0731 00:28:33.084190       1 worker-deleter.go:64] worker-deleter.go:64:dropReplicas():start:clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:drop replicas based on AP
I0731 00:28:33.084360       1 worker-deleter.go:81] worker-deleter.go:81:dropReplicas():end:clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:processed replicas: 0
I0731 00:28:33.084388       1 worker.go:573] includeStopped():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:add CHI to monitoring
I0731 00:28:34.080830       1 controller.go:609] OK update watch (clickhouse-operator/small): {"namespace":"clickhouse-operator","name":"small","clusters":[{"name":"small-cluster","hosts":[{"name":"0-0","hostname":"chi-small-small-cluster-0-0.clickhouse-operator.svc.cluster.local","tcpPort":9000,"httpPort":8123},{"name":"0-1","hostname":"chi-small-small-cluster-0-1.clickhouse-operator.svc.cluster.local","tcpPort":9000,"httpPort":8123},{"name":"1-0","hostname":"chi-small-small-cluster-1-0.clickhouse-operator.svc.cluster.local","tcpPort":9000,"httpPort":8123},{"name":"1-1","hostname":"chi-small-small-cluster-1-1.clickhouse-operator.svc.cluster.local","tcpPort":9000,"httpPort":8123}]}]}
I0731 00:28:34.086936       1 worker.go:540] clickhouse-operator/small:all IP addresses are in place
I0731 00:28:34.849395       1 worker.go:611] clickhouse-operator/small/180646f1-c931-4e3b-a3f3-65139d017c63:IPs of the CHI-2 [<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]
I0731 00:28:34.858428       1 worker.go:615] clickhouse-operator/small/17213228-21ab-419f-a507-521ae8b500ff:Update users IPS-2
I0731 00:28:35.728260       1 worker.go:636] finalizeReconcileAndMarkCompleted():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:reconcile completed successfully, task id: 04a5fa26-4934-4bf9-a93f-b1b0364db208
I0731 00:28:36.677452       1 worker-reconciler.go:111] worker-reconciler.go:52:reconcileCHI():end:clickhouse-operator/small
I0731 00:28:36.677742       1 worker.go:414] worker.go:380:updateCHI():end:clickhouse-operator/small

Do you mean service clickhouse-{chi-name}-{cluster-name} didn't created?
I see  in logs
E0731 00:27:54.258470       1 worker.go:1207] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/clickhouse-small
failed with error Service "clickhouse-small" is invalid: spec.loadBalancerClass: Invalid value: "null": may not change once set

Which clichouse-operator version do you use? did you sync CRDS?
Could you share?
kubectl get deploy -l app=clickhouse-operator -o yaml
kubectl get crd clickhouseinstallations.clickhouse.altinity.com -o jsonpath='{.metadata.labels}'

Your password changes are not related to any kubernetes services
clickhouse-operator deployment use clickhouse_operator user by default to interaction with clickhouse-server pods
default/networks/ip: "::/0"
better will not open default user without a password from any IP

Hey @Slach , thanks for your reply!
Yeah, at first when we apply the clickhouse-cluster.yaml, the service for the cluster clickhouse-{chi-name}-{cluster-name} can be created successfully, but after I made the password change and use kubectl apply -f clickhouse-cluster.yaml -n clickhouse-operator to apply the changes, the service for the cluster disappeared.
And as the log says, I can find some error logs related to the service, but not sure if it's related to our EKS setup or not
E0731 00:27:54.258470       1 worker.go:1207] updateService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Update Service clickhouse-operator/clickhouse-small failed with error Service "clickhouse-small" is invalid: spec.loadBalancerClass: Invalid value: "null": may not change once set
I0731 00:27:55.660814       1 deleter.go:327] clickhouse-operator/clickhouse-small:OK delete Service clickhouse-operator/clickhouse-small
E0731 00:27:55.858509       1 worker.go:1232] createService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:Create Service clickhouse-operator/clickhouse-small failed with error Service "clickhouse-small" is invalid: spec.clusterIPs: Invalid value: []string{"<IP_ADDRESS>"}: failed to allocate IP <IP_ADDRESS>: provided IP is already allocated
E0731 00:27:56.875412       1 worker-reconciler.go:661] reconcileService():clickhouse-operator/small/04a5fa26-4934-4bf9-a93f-b1b0364db208:FAILED to reconcile Service: clickhouse-small CHI: small

Here're the commands and output

kubectl get deploy -l app=clickhouse-operator -o yaml -n clickhouse-operator

apiVersion: v1
items:
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"clickhouse-operator","clickhouse.altinity.com/chop":"0.21.2"},"name":"clickhouse-operator","namespace":"clickhouse-operator"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"clickhouse-operator"}},"template":{"metadata":{"annotations":{"prometheus.io/port":"8888","prometheus.io/scrape":"true"},"labels":{"app":"clickhouse-operator"}},"spec":{"containers":[{"env":[{"name":"OPERATOR_POD_NODE_NAME","valueFrom":{"fieldRef":{"fieldPath":"spec.nodeName"}}},{"name":"OPERATOR_POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}},{"name":"OPERATOR_POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"OPERATOR_POD_IP","valueFrom":{"fieldRef":{"fieldPath":"status.podIP"}}},{"name":"OPERATOR_POD_SERVICE_ACCOUNT","valueFrom":{"fieldRef":{"fieldPath":"spec.serviceAccountName"}}},{"name":"OPERATOR_CONTAINER_CPU_REQUEST","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"requests.cpu"}}},{"name":"OPERATOR_CONTAINER_CPU_LIMIT","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"limits.cpu"}}},{"name":"OPERATOR_CONTAINER_MEM_REQUEST","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"requests.memory"}}},{"name":"OPERATOR_CONTAINER_MEM_LIMIT","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"limits.memory"}}}],"image":"altinity/clickhouse-operator:latest","imagePullPolicy":null,"name":"clickhouse-operator","volumeMounts":[{"mountPath":"/etc/clickhouse-operator","name":"etc-clickhouse-operator-folder"},{"mountPath":"/etc/clickhouse-operator/conf.d","name":"etc-clickhouse-operator-confd-folder"},{"mountPath":"/etc/clickhouse-operator/config.d","name":"etc-clickhouse-operator-configd-folder"},{"mountPath":"/etc/clickhouse-operator/templates.d","name":"etc-clickhouse-operator-templatesd-folder"},{"mountPath":"/etc/clickhouse-operator/users.d","name":"etc-clickhouse-operator-usersd-folder"}]},{"env":[{"name":"OPERATOR_POD_NODE_NAME","valueFrom":{"fieldRef":{"fieldPath":"spec.nodeName"}}},{"name":"OPERATOR_POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}},{"name":"OPERATOR_POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"OPERATOR_POD_IP","valueFrom":{"fieldRef":{"fieldPath":"status.podIP"}}},{"name":"OPERATOR_POD_SERVICE_ACCOUNT","valueFrom":{"fieldRef":{"fieldPath":"spec.serviceAccountName"}}},{"name":"OPERATOR_CONTAINER_CPU_REQUEST","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"requests.cpu"}}},{"name":"OPERATOR_CONTAINER_CPU_LIMIT","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"limits.cpu"}}},{"name":"OPERATOR_CONTAINER_MEM_REQUEST","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"requests.memory"}}},{"name":"OPERATOR_CONTAINER_MEM_LIMIT","valueFrom":{"resourceFieldRef":{"containerName":"clickhouse-operator","resource":"limits.memory"}}}],"image":"altinity/metrics-exporter:latest","imagePullPolicy":null,"name":"metrics-exporter","ports":[{"containerPort":8888,"name":"metrics"}],"volumeMounts":[{"mountPath":"/etc/clickhouse-operator","name":"etc-clickhouse-operator-folder"},{"mountPath":"/etc/clickhouse-operator/conf.d","name":"etc-clickhouse-operator-confd-folder"},{"mountPath":"/etc/clickhouse-operator/config.d","name":"etc-clickhouse-operator-configd-folder"},{"mountPath":"/etc/clickhouse-operator/templates.d","name":"etc-clickhouse-operator-templatesd-folder"},{"mountPath":"/etc/clickhouse-operator/users.d","name":"etc-clickhouse-operator-usersd-folder"}]}],"serviceAccountName":"clickhouse-operator","volumes":[{"configMap":{"name":"etc-clickhouse-operator-files"},"name":"etc-clickhouse-operator-folder"},{"configMap":{"name":"etc-clickhouse-operator-confd-files"},"name":"etc-clickhouse-operator-confd-folder"},{"configMap":{"name":"etc-clickhouse-operator-configd-files"},"name":"etc-clickhouse-operator-configd-folder"},{"configMap":{"name":"etc-clickhouse-operator-templatesd-files"},"name":"etc-clickhouse-operator-templatesd-folder"},{"configMap":{"name":"etc-clickhouse-operator-usersd-files"},"name":"etc-clickhouse-operator-usersd-folder"}]}}}}
    creationTimestamp: "2023-07-17T22:00:10Z"
    generation: 1
    labels:
      app: clickhouse-operator
      clickhouse.altinity.com/app: chop
      clickhouse.altinity.com/chop: 0.21.2
      clickhouse.altinity.com/chop-commit: 32ef0fa
      clickhouse.altinity.com/chop-date: 2023-06-29T09.08.10
    name: clickhouse-operator
    namespace: clickhouse-operator
    resourceVersion: "105804355"
    uid: cf3a2bae-4846-4aae-b191-452eec79ca3e
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app: clickhouse-operator
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        annotations:
          prometheus.io/port: "8888"
          prometheus.io/scrape: "true"
        creationTimestamp: null
        labels:
          app: clickhouse-operator
      spec:
        containers:
        - env:
          - name: OPERATOR_POD_NODE_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: OPERATOR_POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          - name: OPERATOR_POD_NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          - name: OPERATOR_POD_IP
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: status.podIP
          - name: OPERATOR_POD_SERVICE_ACCOUNT
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.serviceAccountName
          - name: OPERATOR_CONTAINER_CPU_REQUEST
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: requests.cpu
          - name: OPERATOR_CONTAINER_CPU_LIMIT
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: limits.cpu
          - name: OPERATOR_CONTAINER_MEM_REQUEST
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: requests.memory
          - name: OPERATOR_CONTAINER_MEM_LIMIT
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: limits.memory
          image: altinity/clickhouse-operator:latest
          imagePullPolicy: Always
          name: clickhouse-operator
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/clickhouse-operator
            name: etc-clickhouse-operator-folder
          - mountPath: /etc/clickhouse-operator/conf.d
            name: etc-clickhouse-operator-confd-folder
          - mountPath: /etc/clickhouse-operator/config.d
            name: etc-clickhouse-operator-configd-folder
          - mountPath: /etc/clickhouse-operator/templates.d
            name: etc-clickhouse-operator-templatesd-folder
          - mountPath: /etc/clickhouse-operator/users.d
            name: etc-clickhouse-operator-usersd-folder
        - env:
          - name: OPERATOR_POD_NODE_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: OPERATOR_POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          - name: OPERATOR_POD_NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          - name: OPERATOR_POD_IP
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: status.podIP
          - name: OPERATOR_POD_SERVICE_ACCOUNT
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.serviceAccountName
          - name: OPERATOR_CONTAINER_CPU_REQUEST
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: requests.cpu
          - name: OPERATOR_CONTAINER_CPU_LIMIT
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: limits.cpu
          - name: OPERATOR_CONTAINER_MEM_REQUEST
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: requests.memory
          - name: OPERATOR_CONTAINER_MEM_LIMIT
            valueFrom:
              resourceFieldRef:
                containerName: clickhouse-operator
                divisor: "0"
                resource: limits.memory
          image: altinity/metrics-exporter:latest
          imagePullPolicy: Always
          name: metrics-exporter
          ports:
          - containerPort: 8888
            name: metrics
            protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/clickhouse-operator
            name: etc-clickhouse-operator-folder
          - mountPath: /etc/clickhouse-operator/conf.d
            name: etc-clickhouse-operator-confd-folder
          - mountPath: /etc/clickhouse-operator/config.d
            name: etc-clickhouse-operator-configd-folder
          - mountPath: /etc/clickhouse-operator/templates.d
            name: etc-clickhouse-operator-templatesd-folder
          - mountPath: /etc/clickhouse-operator/users.d
            name: etc-clickhouse-operator-usersd-folder
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: clickhouse-operator
        serviceAccountName: clickhouse-operator
        terminationGracePeriodSeconds: 30
        terminationGracePeriodSeconds: 30
        volumes:
        - configMap:
            defaultMode: 420
            name: etc-clickhouse-operator-files
          name: etc-clickhouse-operator-folder
        - configMap:
            defaultMode: 420
            name: etc-clickhouse-operator-confd-files
          name: etc-clickhouse-operator-confd-folder
        - configMap:
            defaultMode: 420
            name: etc-clickhouse-operator-configd-files
          name: etc-clickhouse-operator-configd-folder
        - configMap:
            defaultMode: 420
            name: etc-clickhouse-operator-templatesd-files
          name: etc-clickhouse-operator-templatesd-folder
        - configMap:
            defaultMode: 420
            name: etc-clickhouse-operator-usersd-files
          name: etc-clickhouse-operator-usersd-folder
  status:
    availableReplicas: 1
    conditions:
    - lastTransitionTime: "2023-07-17T22:00:10Z"
      lastUpdateTime: "2023-07-17T22:00:15Z"
      message: ReplicaSet "clickhouse-operator-7b7fb5dc7b" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
    - lastTransitionTime: "2023-07-18T15:16:55Z"
      lastUpdateTime: "2023-07-18T15:16:55Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
    updatedReplicas: 1
kind: List
metadata:
  resourceVersion: ""

kubectl get crd clickhouseinstallations.clickhouse.altinity.com -o jsonpath='{.metadata.labels}'

{"clickhouse.altinity.com/chop":"0.21.2"}%

Just curious @shenzhu, is the indentation of admin/password correct in the original YAML or is that an artifact of the diff?

@sunsingerus ^ any ideas?

@shenzhu are you sure you have only one instance of clickhouse-operator?
could you share
kubectl get deploy --all-namespaces | grep operator ?

do you have any ClickHouseInstallationTemplate resources?
kubectl get chit --all-namespaces?

@shenzhu @hodgesrm @Slach
Current vision of the situation is like the following.
Post-mortem

There is some kind of default LoadBalancerClass assigned to a service created in EKS.
Operator do not migrate this LoadBalancerClass at the moment - this behavior is a subject of modification - and tries to update service with default 'missing' value
When update fails, operator tries to recreate the service. In this case operator deletes existing service and tries to re-create copy of the previous one, with internal fields specified (including IP address) - this behavior is a subject of modification as well
This operation fails, which we can see in logs due to IP address being already assigned.
Operator fails and gives ups.
That's why service is deleted :(
Good news - behavior is updated in 0.22.0 version

@shenzhu please try with 0.22.0 version - it is already available

Hey team, thanks so much for your help! We will try the new version 0.22.0.
On our side, we tried some workarounds for this issue:
Option 1
We are operating Kubernetes in AWS EKS, and are using AWS Load Balancer Controller. The first fix we tried is to specify the loadBalancerClass to service.k8s.aws/nlb, something like the following
...
    serviceTemplates:
      - name: service-clickhouse
        spec:
          loadBalancerClass: service.k8s.aws/nlb
          ports:
            - name: http
              port: 8123
            - name: client
              port: 9000
          type: LoadBalancer

Option 2
Instead of relying on Kubernetes LoadBalancer to provide external access, we tried adding a Ingress layer in front. In this case the Service doesn't has to be LoadBalancer, so we changed it to ClusterIP and updated the Ingress to connect to this ClusterIP. Something like following
...
    serviceTemplates:
      - name: service
        spec:
          ports:
            - name: http
              port: 8123
            - name: client
              port: 9000
          type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: clickhouse
spec:
  ingressClassName: nginx-internal
  rules:
    - host: small.clickhouse.cluster
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: clickhouse-small
                port:
                  number: 8123

cc. @hodgesrm @sunsingerus @Slach

Hey team, thanks so much for your help! We will try the new version 0.22.0.
On our side, we tried some workarounds for this issue:
Option 1 We are operating Kubernetes in AWS EKS, and are using AWS Load Balancer Controller. The first fix we tried is to specify the loadBalancerClass to service.k8s.aws/nlb, something like the following
...
    serviceTemplates:
      - name: service-clickhouse
        spec:
          loadBalancerClass: service.k8s.aws/nlb
          ports:
            - name: http
              port: 8123
            - name: client
              port: 9000
          type: LoadBalancer

Option 2 Instead of relying on Kubernetes LoadBalancer to provide external access, we tried adding a Ingress layer in front. In this case the Service doesn't has to be LoadBalancer, so we changed it to ClusterIP and updated the Ingress to connect to this ClusterIP. Something like following
...
    serviceTemplates:
      - name: service
        spec:
          ports:
            - name: http
              port: 8123
            - name: client
              port: 9000
          type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: clickhouse
spec:
  ingressClassName: nginx-internal
  rules:
    - host: small.clickhouse.cluster
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: clickhouse-small
                port:
                  number: 8123

cc. @hodgesrm @sunsingerus @Slach

I wonder how to connect to the clickhouse via the exported ingress?
I do the same thing and want to export clickhouse for external access, but i can't connect to the clickhouse server via the clickhouse-client -h /clickhouse as the path of my ingress is /clickhouse.
Any suggestion?

Hi @alazyer , I think the host specified in the Ingress won't work automatically, the underlying infra needs to be updated to support it externally.

It has been reproduced and fixed in 0.22


MINOR: Some cleanup in the transactional producer

@apurvam I saw a few opportunities to simplify TransactionManager. Let me know if this seems reasonable.
cc @ijuma

@apurvam Thanks for reviewing. I agree the generics didn't buy us all that much. I'm happy to remove them. Let's see what @ijuma thinks.

I am not fussed either way about generics. I most like how you combine the TransactionalRequest with the TransactionalRequestHandler. This is much cleaner.

LGTM with the latest changes!


Use primitive types when recording cassettes using aiohttp stub

Fixes #405
Cassettes generated by vcrpy using aiohttp before this PR:
    headers:
      ? !!python/object/new:multidict._istr.istr [Access-Control-Allow-Credentials]
      : 'true'
      ? !!python/object/new:multidict._istr.istr [Access-Control-Allow-Origin]
      : '*'
      ? !!python/object/new:multidict._istr.istr [Connection]
      : keep-alive
      ? !!python/object/new:multidict._istr.istr [Content-Length]
      : '324'
      ? !!python/object/new:multidict._istr.istr [Content-Type]
      : application/json
      ? !!python/object/new:multidict._istr.istr [Date]
      : Tue, 06 Nov 2018 17:43:25 GMT
      ? !!python/object/new:multidict._istr.istr [Server]
      : gunicorn/19.9.0
      ? !!python/object/new:multidict._istr.istr [Via]
      : 1.1 vegur
    status: {code: 200, message: OK}
    url: !!python/object/new:yarl.URL
      state: !!python/tuple
      - !!python/object/new:urllib.parse.SplitResult [https, httpbin.org, /get, '',
        '']

After:
    headers:
      Access-Control-Allow-Credentials: 'true'
      Access-Control-Allow-Origin: '*'
      Connection: keep-alive
      Content-Length: '0'
      Content-Type: text/html; charset=utf-8
      Date: Thu, 04 Jul 2019 02:54:19 GMT
      Referrer-Policy: no-referrer-when-downgrade
      Server: nginx
      X-Content-Type-Options: nosniff
      X-Frame-Options: DENY
      X-XSS-Protection: 1; mode=block
    status:
      code: 200
      message: OK
    url: https://httpbin.org/status/200

Would this constitute a breaking change or a fix? It does change existing behaviour and a minor release could hurt people relying on converting existing behaviour.
Subject to correction I’ll flag this for the v3.0.x Milestone.

Would this constitute a breaking change or a fix?

This is a bugfix because the cassette should never contain those strings related to custom types. Also, the cassette response URL can only be used/read after this PR.

That makes sense. Thanks for following up.

@lamenezes thank you for fixing this!


HAAR-1132 Add Delius Health checks and set up separate health webclients

Approved, but not clear whey we need to define separate WebClient beans for health checking?

Approved, but not clear whey we need to define separate WebClient beans for health checking?

All the other services do this - not sure exactly why


Overload Save/Load for long primitive type

I'm trying to overload Save/Load functions in order to manage different sizeof (VS 4 Byte, g++ 8 byte).
When I add the overload functions:
`namespace cereal {
template
void save(Archive & ar, long const & elem)
{
if ((sizeof(long) == 8) && elem > INT32_MAX)
{
elem = 0xFFFFFFFF;
}
ar((int32_t)(elem));

}
template
void load(Archive & ar, long & elem)
{
std::int32_t elem32;
ar(elem32);
elem = (long) elem32;
}
}`
and compile the test file, I obtain the following error:

static assertion failed: cereal could not find any output serialization functions for the provided type and archive combination.

TestLong.cpp.txt

The static assertion we gave there isn't entirely truthful, in fact it should have given you one like this:
workspace/cereal/include/cereal/cereal.hpp:472:9: error: static assertion failed: cereal found more than one compatible output serialization function for the provided type and archive combination.

 Types must either have a serialize function, load/save pair, or load_minimal/save_minimal pair (you may not mix these).
 Use specialization (see access.hpp) if you need to disambiguate between serialize vs load/save functions.
 Note that serialization functions can be inherited which may lead to the aforementioned ambiguities.
 In addition, you may not mix versioned with non-versioned serialization functions.

         static_assert(traits::detail::count_output_serializers<T, ArchiveType>::value < 2,
         ^

The problem is that cereal provides a function that works for long, found in cereal/archives/portable_binary.hpp, which has a single template parameter for the type. Your function does not have precedence over this generic one, thus giving the error. You would need to explicitly define the Archive parameter to disambiguate the functions.
Once you have done that, e.g.:
  void save(PortableBinaryOutputArchive & ar, long const & elem)
  {
      ar(elem);
  }

  void load(PortableBinaryInputArchive & ar, long & elem)
  {
      ar(elem);
  }

You still need to actually do something to the long with the archive. Once an archive decomposes serialization into POD items, it directly manipulates them. Take a look at what happens in cereal/archives/portable_binary.hpp.

Thank you for your reply.
Following your advice I solved the problem.
For completeness, the errors I recevied compiling the test file are the following:

cereal-1.2.2/include/cereal/cereal.hpp:462:9: error: static assertion failed: cereal could not find any output serialization functions for the provided type and archive combination.
Types must either have a serialize function, load/save pair, or load_minimal/save_minimal pair (you may not mix these).
Serialize functions generally have the following signature:
template<class Archive>
void serialize(Archive & ar)
{
ar( member1, member2, member3 );
}
    static_assert(traits::detail::count_output_serializers<T, ArchiveType>::value != 0,

and

cereal-1.2.2/include/cereal/cereal.hpp:851:9: error: static assertion failed: cereal could not find any input serialization functions for the provided type and archive combination.
Types must either have a serialize function, load/save pair, or load_minimal/save_minimal pair (you may not mix these).
Serialize functions generally have the following signature:
template<class Archive>
void serialize(Archive & ar)
{
ar( member1, member2, member3 );
}
    static_assert(traits::detail::count_input_serializers<T, ArchiveType>::value != 0,


[ZF3] Discussion about the future of Forms

Form for ZF3
Hi everyone,
Zend\Form is without any doubt one of the major Zend Framework 2 component (although I use it less and less in favour of only input filters), and I'd love to have some of your feedbacks about what we can do for ZF3 to make it better.
Because Form is a glue between a lot of other components (most notably input filter, hydrator and view layer), I won't start any work until those other components are refactored.
The good
In overall, Form component in ZF2 is rather good. A lot of complexity we had in ZF1 is gone, and decoupling all the parts make it much more simple to use.
I especially liked the fact that filtering and validations was moved to a new component (input filter), so it is easier to reuse. I think without any doubt that we want to keep this general architecture for ZF3.
People also enjoyed how Zend\Form made it easier to use objects through binding, and having complex hierarchies through the use of fieldsets. However, I brought this feature at the end of the beta process (beta 5 iirc), and we could integrate it much better.
The bad

Naming is confusing. A lot of people are afraid of using fieldsets because they think they should represent HTML fieldsets, while it's completely wrong. Fieldsets are meant to be reused, so you can have a User entity / User input filter / User fieldset combo. A better naming would be something like "ElementCollection". I think we should also have a wider discussion about naming : in the input filter refactor we agreed to rename "InputFilter" class to "InputCollection". I'm afraid that some people would be confuse between "Input"/"InputCollection" (input filter component) and "Element"/"ElementCollection" in form component (after all, it would make even more sense to have "Input" naming in Form component). What do you think about it?
Performance : forms are slow. Especially when using a lot of elements and collections. Hopefully, the refactor of Input filter already provides a BIG speed-up, the Hydrator refactor too, and I have plenty of ideas to make it a lot faster.
Implementation is complex: people have added a lot of features over the time, especially related to collections. However, collections were a bit of a hack, and it leads to a very complex and inefficient code.

The ugly

Input filter cannot be attached to fieldsets (although fieldsets can provide input filter specification, but don't have setInputFilter method). This is a must for reusability and is currently a big problem.
Refactor collection: in ZF2, input filter don't have the ability to have filters and validators. In the input filter refactor, input filter can have their own filters and validators. A lot of work will be moved from the Form collection element to the input filter. Collections should be much less problematic.
I've always feel bad about the "useAsBaseFieldset" option (although I have been the one introducing it). I'm not even sure we should allow binding object on Form object (if we rename "Fieldset" to "ElementCollection", it makes even more sense to see "Form" object as a container for ElementCollection and a few goodies like CSRF and submit button).
View helpers and elements: for some form elements like DateSelect, the data are loaded in the view helpers instead of in the form element themselve. This is super annoying, because DateSelect element cannot be rendered manually for instance: you HAVE TO use the view helper to generate the months names, day names and year names. In ZF3, such things should be created in the element directly, so that people cna use their own view helpers (or no view helpers at all).

Thoughts?

Hi,
One of the major things I am concerned regarding Forms is performance.
I see a point where is possibly to improve performance and I am not quite sure if this is possibly on ZF2, if not then ZF2 should consider this.
Below is a sample on how do I work with form:
        $form = new \Admin\Form\ChangePassword();
        $form->setInputFilter(new \Admin\Filter\ChangePasswordFilter());

        if ($this->getRequest()->isPost()) {

            $postData = $this->params()->fromPost();

            $form->setData($postData);

            if ($form->isValid()) {

                $data = $form->getData();

		//save the data

                //redirect or so
            } else {

            }
        } else {

        }

The problem is I don't see a reason to instantiate the form unless there is a need to actually render the form. So I would rather have the logic like this
        $inputFilter = new \Admin\Filter\ChangePasswordFilter();

        if ($this->getRequest()->isPost()) {

            $postData = $this->params()->fromPost();

            $inputFilter->setData($postData);

            if ($inputFilter->isValid()) {

                $data = $inputFilter->getData();

		//save the data

                //redirect or so
            } else {
		$form = new \Admin\Form\ChangePassword();
		$form->setInputFilter($inputFilter);
            }
        } else {
                //similar code, to be used a getForm function probably
		$form = new \Admin\Form\ChangePassword();
		$form->setInputFilter($inputFilter);
        }

Again, I havent tested if this would work on ZF2 but this would help on performance. If this is possibly on ZF2 too I suggest changing the documentation to use this "light" approach.

That wouldn't improve performance in a noticeable way. Also, use a lazy
service rather than skipping initialization manually.
On Dec 24, 2015 09:44, "cbichis"<EMAIL_ADDRESS>wrote:

Hi,
One of the major things I am concerned regarding Forms is performance.
I see a point where is possibly to improve performance and I am not quite
sure if this is possibly on ZF2, if not then ZF2 should consider this.
Below is a sample on how do I work with form:
    $form = new \Admin\Form\ChangePassword();
    $form->setInputFilter(new \Admin\Filter\ChangePasswordFilter());

    if ($this->getRequest()->isPost()) {

        $postData = $this->params()->fromPost();

        $form->setData($postData);

        if ($form->isValid()) {

            $data = $form->getData();

    //save the data

            //redirect or so
        } else {

        }
    } else {

    }

The problem is I don't see a reason to instantiate the form unless there
is a need to actually render the form. So I would rather have the logic
like this
    $inputFilter = new \Admin\Filter\ChangePasswordFilter();

    if ($this->getRequest()->isPost()) {

        $postData = $this->params()->fromPost();

        $inputFilter->setData($postData);

        if ($inputFilter->isValid()) {

            $data = $inputFilter->getData();

    //save the data

            //redirect or so
        } else {
    $form = new \Admin\Form\ChangePassword();
    $form->setInputFilter($inputFilter);
        }
    } else {
            //similar code, to be used a getForm function probably
    $form = new \Admin\Form\ChangePassword();
    $form->setInputFilter($inputFilter);
    }

Again, I havent tested if this would work on ZF2 but this would help on
performance. If this is possibly on ZF2 too I suggest changing the
documentation to use this "light" approach.
—
Reply to this email directly or view it on GitHub
https://github.com/zendframework/zf2/issues/5443#issuecomment-167069896.

What do you think about more simpler usage in controller?
For example
if ($form->isSuccess()) {
	// Form was submitted and successfully validated
	$data = $form->getData();
       // Save the data
}

We can use method look like this
	/**
	 * Tells if the form was submitted and successfully validated.
	 * @return bool
	 */
	public function isSuccess()
	{
		return $this->isSubmitted() && $this->isValid();
	}

And process Requests in form.
Example with binding object
$form = new Form();
$object = $objectRepository->find($id);
$form->bind($object);
if ($form->isSuccess()) {
    // Save the data
    $objectManager->persist($object);
    $objectManager->flush();
    // Redirect
}

Only one row
if ($form->isSuccess()) {

now many rows
if ($this->getRequest()->isPost()) {
            $postData = $this->params()->fromPost();
            $form->setData($postData);
            if ($form->isValid()) {

@ocramius. I am pointing that using Form for data validation may not be even needed for this case.
My code was just dummy/sample.

This issue has been closed as part of the bug migration program as outlined here - http://framework.zend.com/blog/2016-04-11-issue-closures.html


How i can compile it?

Hi, can someone help me? I need to install it on raspberry pi 3 with LEDE but i don't know how i can compile it! Thanks

not working on arm for me too


proposal: cmd/go: preserve basic GOPATH mode indefinitely

In Feb 2021 (https://go.dev/blog/go116-module-changes), we wrote:

It's still possible to build packages in GOPATH mode by setting the GO111MODULE environment variable to off. ... We plan to drop support for GOPATH mode in Go 1.17.  If you have projects that do not build in module-aware mode, now is the time to migrate. If there is a problem preventing you from migrating, please consider filing an issue or an experience report.

The time has come to decide what to do about GOPATH mode. There are at least two important problems with maintaining GOPATH mode as it exists today:

The old, GOPATH-mode go get is being left behind as far as security improvements like the module proxy, checksum databases, and so on. All the focus is on modules.

The old, GOPATH-mode source layout does not provide a way to identify the language version used by the source code. There is a bit of divergence here in that a go.mod with no go line assumes Go 1.16, while in GOPATH mode we assume the latest version of Go. This means if someone has downloadable packages they develop in GOPATH mode, they can use language features introduced after Go 1.16, like generics, but when clients download that code in module mode as a "legacy" module, the code is interpreted as Go 1.16 and does not compile. The divergence will become greater over time as other language features or changes are made, such as #60078.

On the other hand, GOPATH mode remains the only way to work on dependency-free legacy packages that existing module code may still depend on (so-called "+incompatible" modules), and it remains the only way to build historical source code that predates modules, especially code that depends on the multiple layers of vendoring that Go 1.5 introduced (and modules removed).
Given these tensions, I propose that we do the following:

Commit to preserving the ability to build GOPATH-layout source trees when GO111MODULE=off, indefinitely.
Disable go get completely in GOPATH mode, since there is increasingly little code that it can download successfully and provides a worse and worse experience.
Assume a language setting of Go 1.21 in GOPATH mode, instead of continuing to assume "the latest Go version". This will ensure that if we change for loops in Go 1.22 (#60078) or make other changes in the future, the old, legacy code we are aiming to keep compiling does keep compiling as written.

We would make these changes for Go 1.22. The GOPATH mode enabler would continue to be GO111MODULE=off rather than introducing a cleaner name like GOMODULE=off, because there's little point to upsetting whatever scripts people with legacy trees have already written.

Do you expect that tools like gopls will continue to support GOPATH mode? While go list takes care of a lot of the details, it still requires some special handling in go/packages AFAIU — and possibly in the tools' themselves.

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

What examples are there of GOPATH packages we want to keep working with the latest toolchains?
The steps to convert GOPATH packages to modules are:

go mod init ...
go get ...
go mod tidy

Unless I missed something, that's not much effort. This is basically equivalent to forking a package that you know will be deleted soon. In a sense, GOPATH packages would be "deleted." Anyone who truly cares can fork their own copy, and turn it into a module for others to use too.
How much simpler would the toolchain be without GOPATH support?

An anecdotal data point: My project at work still depends on GOPATH mode to build. Dependencies are managed with a 2015 era tool that automates populating the GOPATH with the desired versions of dependencies, but provides little help deciding what the versions should be. We would have upgraded to Go modules long ago had it been easy, but due to the size of the project, the accumulated complexity of its dependency tree, and other reasons it hasn't happened yet. Not for a lack of desire, by the way. The project policy for the toolchain version is to stay one major version behind, so it's currently built with Go 1.19 and would upgrade to 1.20 shortly after 1.21 is released.
Fortunately we have been able to remove some of the barriers to adopting modules over the last several months and I believe we will be upgraded sometime in the next several months. But there may be other projects similar to ours that are not publicly visible, that still need GOPATH, are still actively worked on, and regularly upgrade the toolchain, but are farther away from using modules. Continuing to support GOPATH mode helps projects like that.

How much simpler would the toolchain be without GOPATH support?

The main quirks remaining to support GOPATH mode have to do with how we resolve dependencies in vendor directories, although even that has some overlap with how we support the vendored dependencies of the standard library.
Beyond that, as Russ mentions, the go get implementation for GOPATH mode is complex and fairly subtle.
Speaking as one of the primary maintainers of cmd/go, I fell that the cost/benefit tradeoff supports Russ's proposal. The go get support is subtle and not worth the cost to maintain, but maintaining go build support for the time being is fairly inexpensive and may be valuable for the long tail of migrations (especially for enterprise users).

@ChrisHines Thanks for your example. I'm curious, how many man hours, working full-time 8 hour days without distraction, do you think it would take to convert that project to an equivalent module? I realize that it's probably non-trivial to do, but I suspect that a lot of situations like that (not necessarily yours, I'm speaking generally) are more a result of management deciding to spend their money on shiny new features instead of maintaining their code, especially since, until now, others have been willing to pay the price to keep them afloat in their current condition. I'm asking so we can have a better sense of the trade-off costs here.

Being able to run old (self-contained) code that predates modules is also worthwhile. That requires having GOPATH build support. Keeping build working is easy and it has real benefits.

@willfaught It would not be a single module. The project has dozens of repositories that will each become a module. About a dozen of those contain packages depended on a few levels deep by the rest of them. We've already invested hundreds of man hours to get things into a state that will make the transition easier (while being careful not to break things or interrupt regular development). At this point the source code is in a good state for a migration. I've already written a tool that can create an equivalent go.mod from the file format our existing tool uses and we have a map of our internal dependencies.
The biggest hurdle for us now is that the tool we've been using doesn't enforce repeatable builds. It allows depending on a branch head. We only use that for internal dependencies, but that implies a certain workflow that developers are used to and that our CI systems have been adapted to. Next steps are working out how to adapt our CI systems and developer workflows to the fact modules don't allow depending on branch heads. Trying things out in a small corner of the project where problems will have minimal impact, then educating people. Prior to the addition of workspaces (go.work) in Go 1.18 the workflow problem looked much more daunting, so I'm glad we have that tool available.
The issue has not been management being focused on shiny new features. The project was part way through a migration three years ago, but that was aborted after a key staff member left. I joined the project two years ago and was told almost immediately by management that adopting Go modules was a goal. It's been on the roadmap for a while. But it's a big and old code base with skeletons in many closets that we've been carefully working through.
It's really not a matter of 8 hour focus days as much as managing the smooth evolution of an entrenched social-technical system into a better state.

Speaking as Debian packager, I really appreciate that upstream can keep supporting GOPATH for go build. I'm sorry to say that Debian still relies on it. We don't use go get so it's fine to drop GOPATH for it.

It may not be clear from my previous messages that in my case we also don't use go get in GOPATH mode. It is the go build behavior in GOPATH mode that we still rely on.

Based on the discussion above, this proposal seems like a likely accept.
— rsc for the proposal review group

No change in consensus, so accepted. 🎉
This issue now tracks the work of implementing the proposal.
— rsc for the proposal review group

If I am not mistaken, this will require changes to go/packages, for two reasons:

to pass the correct Go version (1.21) to go/types
to inform the user about the Go 1.21 restriction in case the user doesn't rely on go/packages to do the type checking

If we expose the standard library's "std" and "cmd" modules (as per https://github.com/golang/go/issues/61174#issuecomment-1622471317), would go list -json include this module information even when GO111MODULE=off? If that were the case, we (both go/packages and the user) could default to Go 1.21 whenever module version information is absent. Otherwise, we'd have to inspect the environment to look for GO111MODULE=off, and either add new API to go/packages to report it to the user, or expect the user to check the environment themselves.

Assume a language setting of Go 1.21 in GOPATH mode

Will //go:build be able to upgrade to a higher version? That is, would code built in GOPATH-mode be able to opt into the new loopvar semantics?

@dominikh Yes, that should work.


Widget help please  with just the clock

Question
I set up this great dashboard in 60 min love it.
But soon as i got to the widgets i have spent hours just trying to get the clock working
I have tried with the docs config other users config my yaml i think is correct.
But fails to show please help me why it is not working
I ahve not installed glances or bottle as this should not need it .

Full config HERE
Category
Widgets
Please tick the boxes

[X] You are using a supported version of Dashy (check the first two digits of the version number)
[X] You've checked that this question hasn't already been raised
[X] You've checked the docs and troubleshooting guide
[X] You agree to the code of conduct

Question
I set up this great dashboard in 60 min love it. But soon as i got to the widgets i have spent hours just trying to get the clock working I have tried with the docs config other users config my yaml i think is correct. But fails to show please help me why it is not working
I ahve not installed glances or bottle as this should not need it .

Full config HERE
Category
Widgets
Please tick the boxes

[x]  You are using a supported version of Dashy (check the first two digits of the version number)
[x]  You've checked that this question hasn't already been raised
[x]  You've checked the docs and troubleshooting guide
[x]  You agree to the code of conduct

Please share a working link of your config and share your dashy log.

Try this:
sections:
  - name: Uhrzeit
    widgets:
      - type: clock
        options:
          timeZone: Europe/Berlin
          format: de-DE
          hideDate: false

This will be closed due to no activity in 4 months.


Placement of content in random places.

Description
"Explore opportunities" looks randomly places and cannot relate to the content.
Screenshots

@IAmTamal
I think this should be removed from here.
I am willing to contribute can you please assign me this issue.

Go for it @akshit-mehra


Highlight speakers

Ok, one more thing that I almost forgot: The presenting authors (there might be multiple) need to be highlighted. This is done with this PR, see https://592-267395254-gh.circle-artifacts.com/0/SORSE/programme/workshops/event-004/index.html
I am a bit afraid that it might be too many icons in the author list, what do you think @vsoch?

@Chilipp, it might help aligning the baselines of the icons.

you mean like this @eileen-kuehn?

yeah it's a bit busy! Can you remove the camera icon (it doesn't seem to do anything?) Does it add value?

it's showing who the presenting author(s). do you think highlighting in bold is enough already @vsoch ?

Yes! I wouldn't have guessed that's what the camera icon indicated, I was thinking it meant along the lines of "a video recording is available." The other icons are meaningful (home page or orcid link or affiliation) so I wouldn't remove those.

I see, the alternative would the following:

where the presenting authors (Workshop Guy and Some Guy) are formatted bold

I think that works! Personally I don't think I'd care/ want to know who exactly is presenting when I'm reading the abstract, because it wouldn't impact my decision to register or not.But if you think it's important, the bold would do the trick. Another idea would be to create a special "affiliation" link for presenting authors (akin to how papers do corresponding authors).

Another idea would be to create a special "affiliation" link for presenting authors (akin to how papers do corresponding authors).

Can you provide an example? From the top of my head I just know the case where the corresponding author is highlighted with a little email symbol next to his name.

Sure! Like this:

ah ok, so this is actually not manipulating the affiliation, but rather adding a footnote to highlight the presenting authors. So it's the same that I did before, but adding a * instead of a camera symbol and explain it down below.
Sounds good to me! Shall we use a *, the camera symbol or a little speech bubble?

a * is probably the best to make sure it doesn't get too many icons

done: https://595-267395254-gh.circle-artifacts.com/0/SORSE/programme/workshops/event-004/index.html

the test failure is just because of the dummy events. I'll fix this

alright, from my perspective this is ready to be merged

I'm going asleep now, so please merge it if you are okay with the result @vsoch
Thanks for your helpful advice as always :smiley:


[stable/seq] add apiVersion

Adding the apiVersion for chart.yaml
to fix the issue: https://github.com/helm/charts/issues/13763
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] title of the PR contains starts with chart name e.g. [stable/chart]

/assign @mattfarina

/test pull-charts-e2e

@maorfr PTAL

/lgtm


Can it support sql  delete insert ?

HI,
Can it support sql  delete insert ?
For example:
insert into students(id,name,sex) values (11, 'baidu', 'female')

Hi @zhaodagang!
SQL Delete Insert? I not know this command.
About insert, is ok...
You have error?

My mean is SQL sentence, it includes update, insert, delete,query.
For example: delete students where id=10

when run:   insert into students(id,name,sex) values (11, 'baidu', 'female')
Error:
Request failed with status code 500 - Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected ( before: FORMAT JSON: (at row 2) , e.what() = DB::Exception

wow, nice...fix in next days...


There is a problem with the inference result

I used the following script to inference, but the resulting image was white. Does anyone know what the problem is?
code
code.zip
input

output

Hi, Thanks for your attention to our work. I have read through your code, and I find that you should normalize the image in the range of (-1, 1) before inputting it into the model. And can you provide this image? By the way, can you please give us a star if it is helpful. :)


”Sarmizegetusa”, ”Breazova”, ”Hobița-Grădiște”, ”Păucinești”, ”Zeicani” are listed in the drop-down menu

Description:
When user writes ”Sarmizegetusa”, ”Breazova”, ”Hobița-Grădiște”, ”Păucinești”, ”Zeicani” the locations appear in the drop-down menu next to the comune and the county which is a part according to the law.
Precondition:
The website is up an running.

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Breazova"

Expected results
The location appears in the drop-down menu as "Sat Breazova, HUNEDOARA (Sarmizegetusa)".

Step 7
Write in the search bar "Păucinești"

Expected results
The location appears in the drop-down menu as "Sat Păucinești, HUNEDOARA (Sarmizegetusa)".

Step 8
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 9
Write in the search bar "Păucinești"

Expected results
The location appears in the drop-down menu as "Sat Păucinești, HUNEDOARA (Sarmizegetusa)".

Environment: Run Tests - 4104
Browser: Chrome 123
OS: Windows 10
Steps to reproduce:
1 Open the @Adelina Guliman Test case ui.orase
2. Check TC”Sarmizegetusa”, ”Breazova”, ”Hobița-Grădiște”, ”Păucinești”, ”Zeicani” are listed in the drop-down menu
#4104
Expected results:
Precondition (request):
The website link (https://peviitor-ro.github.io/ui.orase/) is up and running
The link to the law is displayed : "Sat Zeicani, HUNEDOARA (Sarmizegetusa)"
Actual result (displayed):
In STEP9 is displayed :
In the drop down menu you find "Sat Păucinești, HUNEDOARA (Sarmizegetusa)" same like in STEP 7

Modificat, poti retesta.


Favor Calculator Implementation

More verbose description in each individual commit

Two commits since my last update:

Introduced FavorParameters class
Updated that class with better parameters for calculating favor

Here is an example of two nodes calculating the other's favor

Looks good. Could you run through the examples? You can just state when its good to merge.

Ran through examples with no issues. Should be good to merge!


Separate the ContextCarrier for supporting tracecontext-spec

Try to separate the ContextCarrier into two parts, 1)Major part, for following tracecontext-spec, 2)Extend part, for skywalking itself.
This also depends on #421
cc @adriancole, Hope this works. :)  Do you have any schedule to post a list about Which tracers are supporting the spec?

cc @ascrutae @pengys5 for news updated.

Put this into TBD

Already support multi headers for propagation.

I don't have plans to make a supported tracers list, but sounds good. maybe @mtwo or @bogdandrutu does?

If we can keep the spec stabilize, we can keep the right list. Otherwise, it is too hard. But having that list, we can tell the interop works among those tracers, right? That is the spec for. @mtwo, @bogdandrutu @adriancole

@wu-sheng agreed, we should have a list. I think it makes sense to create during the first (v0.1 I guess) release ... do you agree?

@mtwo yes. and skywalking is going to change head format aftet 0.1 released.


Update s3, sdk-core, sqs to 2.21.29

About this PR
📦 Updates

software.amazon.awssdk:s3
software.amazon.awssdk:sdk-core
software.amazon.awssdk:sqs

from 2.21.17 to 2.21.29
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #691.


Increase max cpu to 2 for race.

Increase max cpu to 2 for race.

Thanks you

Hey! Our kernelCTF instances allow 2 CPUs. I assume this will resolve this issue, but feel free to re-open if it isn't. (kCTF VRP does not accept Linux kernel vulnerabilities anymore.)


proxy-cache: update to reflect current knowledge (PROJQUAY-3302)

answer a couple open questions
update non-goals to reflect tech-preview implementation

LGTM


Unable to get observeStateChanges().switchMap work

Disclaimer
Before you will post a new issue to the RxAndroidBle library consider if you are filling a bug/feature request or a general question
about:

Usage of RxJava
Usage of Bluetooth Low Energy
Usage of RxAndroidBle
Weird behaviour of the peripheral you are using
Other not directly related to a new feature request or a bug

If any of the above points seems to match your use case — consider using Google or creating a question on www.stackoverflow.com with
a tag rxandroidble where it will be easier to access by other people with similar questions. Issues that are not bugs or feature requests
will be closed.
Summary
I'm trying to implement observeStateChanges to know the ble state of the device then to scan.
Non of the RxBleClient.State is being called.
Sample Activity would really helpful on this method.
Library version
1.4.1
Preconditions
Using rxjava2, Dagger2, kotlin
Steps to reproduce actual result
1. Used the sample code available on the site page for observeStateChanges
2.
3.
Minimum code snippet reproducing the issue
 flowSubscription = rxBleClient.observeStateChanges()
            .switchMap(state -> { // switchMap makes sure that if the state will change the rxBleClient.scanBleDevices() will unsubscribe and thus end the scan
                switch (state) {

                    case READY:
                        // everything should work
                        return rxBleClient.scanBleDevices();
                    case BLUETOOTH_NOT_AVAILABLE:
                        // basically no functionality will work here
                    case LOCATION_PERMISSION_NOT_GRANTED:
                        // scanning and connecting will not work
                    case BLUETOOTH_NOT_ENABLED:
                        // scanning and connecting will not work
                    case LOCATION_SERVICES_NOT_ENABLED:
                        // scanning will not work
                    default:
                        return Observable.empty();
                }
            })
            .subscribe(
                    rxBleScanResult -> {
                        // Process scan result here.
                        Log.i("Device found", "" + rxBleScanResult.getBleDevice().getMacAddress());
                    },
                    throwable -> {
                        // Handle an error here.
                        Log.i("Device found", "Error ");
                    }
            );

Logs from the application running with setting RxBleLog.setLogLevel(RxBleLog.VERBOSE)
Actual result
Expected result

Hello,
From the Javadoc:
    /**
     * Returns an observable emitting state _changes_ of the RxBleClient environment which may be helpful in deciding if particular
     * functionality should be used at a given moment.
     *
     * @see #getState() for {@link State} precedence order
     *
     * Examples:
     * - If the device is in {@link State#READY} and the user will turn off the bluetooth adapter then {@link State#BLUETOOTH_NOT_ENABLED}
     * will be emitted.
     * - If the device is in {@link State#BLUETOOTH_NOT_ENABLED} then changing state of Location Services will not cause emissions
     * because of the checks order
     * - If the device is in {@link State#BLUETOOTH_NOT_AVAILABLE} then this {@link Observable} will complete because any other checks
     * will not be performed as devices are not expected to obtain bluetooth capabilities during runtime
     *
     * To get the initial {@link State} and then observe changes you can use: `observeStateChanges().startWith(getState())`.
     *
     * @return the observable
     */
    public abstract Observable<State> observeStateChanges();

It clearly states: changes
You can use .startWith(rxBleClient.getState()).


feat(window-state): add option to use json

Add option to store window state in JSON readable format using serde_json

sorry for the very late reply, I think we should just use json only and remove bincode

I think so too, just need to check that it's not a breaking change (what happens if the plugin can't read the old bincode file)
Also I think that it will be good to serialize it with indentation (pretty and readable)


Updated homepage (Readme) for access to the new getting started guides

Overview
Updated homepage (Readme) for access to the new getting started guides
Changes

Fixes: base Readme

Great updates Simon! Might want to remove the "A dream" from the pre-requisites (seems a tad bloggy but that's just me).

That's not part of this change @KatVHarris , likely it was in the initial docs push, so that would need to be a separate PR.

I wanted to make a joke about the Dream too but I waited too long 😆

@davidkline-ms anything stopping this going in, the Getting started's remain hidden until this is in.


Update keycloak to latest version 22.0,1

Starting from version 17, keycloak migrated to something called Quarkus (java container env) and all the configuration seems to be completely different now. Hence the current configuration in the chart is no good anymore. There is an ENTRYPOINT now called kc.sh that acts as a wrapper and the chart needs to pass arguments to it (particularly "start"). This was the reason for the error log displayed in the pod under the status of CrashLoopBackOff.
The server node for testing had rmf-deployment-template.open-rmf.org configured to resolved to the LoadBalancer IP.
I was also able to run the keycloak-setup.bash rmf-deployment-template.open-rmf.org command almost successfully, it failed with:
+ kubectl apply -n deploy -f -
Error from server (NotFound): error when creating "STDIN": namespaces "deploy" not found

Run just fine after creating the deploy namespace.  I was unable to find where that namespace is created.
Known problems: I've seen the keycloak pod to fail to connect to the keycloak-db when I run the installation for the first time and the problem gone after reloading the keycloak pod. Might be a race condition problem, still need to dig into it to be sure.

This is great, thanks Jose!
For reference, the deploy namespace is created in one of the setup steps (https://github.com/j-rivero/rmf_deployment_template/tree/cloud_infra#continuous-deployment-argocd),
As for the keycloak initial failure, perhaps we can tackle it in another PR as it doesnt sound breaking to me? FWIW, Keycloak does need some time to start up and serve requests.

This is great, thanks Jose!
For reference, the deploy namespace is created in one of the setup steps (https://github.com/j-rivero/rmf_deployment_template/tree/cloud_infra#continuous-deployment-argocd),

I see, thanks for the pointer. Then I think it is ready to go against the main repository.


Feature: Two Sum II - Input array is sorted

Problem - Two Sum II - Input array is sorted
Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= first < second <= numbers.length.
Return the indices of the two numbers, index1 and index2, as an integer array [index1, index2] of length 2.
The tests are generated such that there is exactly one solution. You may not use the same element twice.

@keshavsingh4522 mark this issue as up-for-grabs
It's a beginner friendly problem using two sum approach, If anyone wants to work on this issue, you can ask for assigning this issue to you.

I want to work on this issue using java please assign me.

I can work on this issue with a very optimal and good solution.
Please assign this to me.

Hello give me a chance, i will provide you more efficient and readable code.

please assign this issue to me