Skip to content

Commit b61727c

Browse files
author
raghu nandan
committed
fix statefulset continious update
1 parent a98ca22 commit b61727c

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

service/k8s/statefulset.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package k8s
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
67
"strconv"
78
"strings"
@@ -38,6 +39,8 @@ type StatefulSetService struct {
3839
metricsRecorder metrics.Recorder
3940
}
4041

42+
var previousSS appsv1.StatefulSet
43+
4144
// NewStatefulSetService returns a new StatefulSet KubeService.
4245
func NewStatefulSetService(kubeClient kubernetes.Interface, logger log.Logger, metricsRecorder metrics.Recorder) *StatefulSetService {
4346
logger = logger.With("service", "k8s.statefulSet")
@@ -101,16 +104,11 @@ func (s *StatefulSetService) CreateOrUpdateStatefulSet(namespace string, statefu
101104
if err != nil {
102105
// If no resource we need to create.
103106
if errors.IsNotFound(err) {
107+
addHashAnnotation(statefulSet)
104108
return s.CreateStatefulSet(namespace, statefulSet)
105109
}
106110
return err
107111
}
108-
109-
// Already exists, need to Update.
110-
// Set the correct resource version to ensure we are on the latest version. This way the only valid
111-
// namespace is our spec(https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#concurrency-control-and-consistency),
112-
// we will replace the current namespace state.
113-
statefulSet.ResourceVersion = storedStatefulSet.ResourceVersion
114112
// resize pvc
115113
// 1.Get the data already stored internally
116114
// 2.Get the desired data
@@ -174,12 +172,15 @@ func (s *StatefulSetService) CreateOrUpdateStatefulSet(namespace string, statefu
174172
statefulSet.Annotations = util.MergeAnnotations(storedStatefulSet.Annotations, statefulSet.Annotations)
175173

176174
if hashingEnabled() {
175+
delete(statefulSet.Annotations, resourceHashAnnotationKey) // this will be regenerated if changes are required.
177176
if !shouldUpdate(statefulSet, storedStatefulSet) {
178177
s.logger.Debugf("%v/%v statefulset is upto date, no need to apply changes...", statefulSet.Namespace, statefulSet.Name)
179178
return nil
180179
}
181180
s.logger.Debugf("%v/%v statefulset has a different resource hash, updating the object...", statefulSet.Namespace, statefulSet.Name)
182181
addHashAnnotation(statefulSet)
182+
previousSS = *statefulSet
183+
183184
}
184185

185186
return s.UpdateStatefulSet(namespace, statefulSet)
@@ -199,3 +200,12 @@ func (s *StatefulSetService) ListStatefulSets(namespace string) (*appsv1.Statefu
199200
recordMetrics(namespace, "StatefulSet", metrics.NOT_APPLICABLE, "LIST", err, s.metricsRecorder)
200201
return stsList, err
201202
}
203+
204+
func StatefulsetToJson(sts appsv1.StatefulSet) {
205+
// convert statefulset object to json string
206+
stsJson, err := json.Marshal(sts)
207+
if err != nil {
208+
fmt.Println(err)
209+
}
210+
fmt.Println(string(stsJson))
211+
}

0 commit comments

Comments
 (0)