@@ -140,7 +140,12 @@ func (reconciler *ClusterReconciler) reconcileStatefulSet(
140140 if desiredStatefulSet != nil && observedStatefulSet != nil {
141141 if getUpdateState (reconciler .observed ) == UpdateStateInProgress {
142142 updateComponent := fmt .Sprintf ("%v StatefulSet" , component )
143- err := reconciler .deleteOldComponent (desiredStatefulSet , observedStatefulSet , updateComponent )
143+ var err error
144+ if * reconciler .observed .cluster .Spec .RecreateOnUpdate {
145+ err = reconciler .deleteOldComponent (desiredStatefulSet , observedStatefulSet , updateComponent )
146+ } else {
147+ err = reconciler .updateComponent (desiredStatefulSet , updateComponent )
148+ }
144149 if err != nil {
145150 return err
146151 }
@@ -192,6 +197,21 @@ func (reconciler *ClusterReconciler) deleteOldComponent(desired runtime.Object,
192197 return nil
193198}
194199
200+ func (reconciler * ClusterReconciler ) updateComponent (desired runtime.Object , component string ) error {
201+ var log = reconciler .log .WithValues ("component" , component )
202+ var context = reconciler .context
203+ var k8sClient = reconciler .k8sClient
204+
205+ log .Info ("Update component" , "component" , desired )
206+ err := k8sClient .Update (context , desired )
207+ if err != nil {
208+ log .Error (err , "Failed to update component for update" )
209+ return err
210+ }
211+ log .Info ("Component update successfully" )
212+ return nil
213+ }
214+
195215func (reconciler * ClusterReconciler ) updateStatefulSet (
196216 statefulSet * appsv1.StatefulSet , component string ) error {
197217 var context = reconciler .context
@@ -238,7 +258,12 @@ func (reconciler *ClusterReconciler) reconcileJobManagerService() error {
238258 // v1.Service API does not handle update correctly when below values are empty.
239259 desiredJmService .SetResourceVersion (observedJmService .GetResourceVersion ())
240260 desiredJmService .Spec .ClusterIP = observedJmService .Spec .ClusterIP
241- err := reconciler .deleteOldComponent (desiredJmService , observedJmService , "JobManager service" )
261+ var err error
262+ if * reconciler .observed .cluster .Spec .RecreateOnUpdate {
263+ err = reconciler .deleteOldComponent (desiredJmService , observedJmService , "JobManager service" )
264+ } else {
265+ err = reconciler .updateComponent (desiredJmService , "JobManager service" )
266+ }
242267 if err != nil {
243268 return err
244269 }
@@ -298,7 +323,12 @@ func (reconciler *ClusterReconciler) reconcileJobManagerIngress() error {
298323
299324 if desiredJmIngress != nil && observedJmIngress != nil {
300325 if getUpdateState (reconciler .observed ) == UpdateStateInProgress {
301- err := reconciler .deleteOldComponent (desiredJmIngress , observedJmIngress , "JobManager ingress" )
326+ var err error
327+ if * reconciler .observed .cluster .Spec .RecreateOnUpdate {
328+ err = reconciler .deleteOldComponent (desiredJmIngress , observedJmIngress , "JobManager ingress" )
329+ } else {
330+ err = reconciler .updateComponent (desiredJmIngress , "JobManager ingress" )
331+ }
302332 if err != nil {
303333 return err
304334 }
@@ -358,7 +388,12 @@ func (reconciler *ClusterReconciler) reconcileConfigMap() error {
358388
359389 if desiredConfigMap != nil && observedConfigMap != nil {
360390 if getUpdateState (reconciler .observed ) == UpdateStateInProgress {
361- err := reconciler .deleteOldComponent (desiredConfigMap , observedConfigMap , "ConfigMap" )
391+ var err error
392+ if * reconciler .observed .cluster .Spec .RecreateOnUpdate {
393+ err = reconciler .deleteOldComponent (desiredConfigMap , observedConfigMap , "ConfigMap" )
394+ } else {
395+ err = reconciler .updateComponent (desiredConfigMap , "ConfigMap" )
396+ }
362397 if err != nil {
363398 return err
364399 }
0 commit comments