@@ -81,10 +81,15 @@ func (c *Controller) rollingUpdate(cluster *corev1.StorageCluster, hash string)
8181 // Need to generalise code for 5 KVDB nodes
8282
8383 // get the number of kvdb members which are unavailable in case of internal kvdb
84- numUnavailableKvdb , kvdbNodes , err := c .getKVDBNodeAvailability (cluster )
85- if err != nil {
86- return err
84+ numUnavailableKvdb := - 1
85+ var kvdbNodes map [string ]bool
86+ if ! util .IsFreshInstall (cluster ) {
87+ numUnavailableKvdb , kvdbNodes , err = c .getKVDBNodeAvailability (cluster )
88+ if err != nil {
89+ return err
90+ }
8791 }
92+
8893 logrus .Debugf ("Marking old pods for deletion" )
8994 for _ , pod := range oldAvailablePods {
9095 if numUnavailable >= maxUnavailable {
@@ -94,10 +99,12 @@ func (c *Controller) rollingUpdate(cluster *corev1.StorageCluster, hash string)
9499 }
95100
96101 // check if pod is running in a node which has internal kvdb running in it
97- if _ , isKvdbNode := kvdbNodes [pod .Spec .NodeName ]; cluster .Spec .Kvdb != nil && cluster .Spec .Kvdb .Internal && isKvdbNode {
98- // if number of unavailable kvdb nodes is greater than or equal to 1, then dont restart portworx on this node
99- if numUnavailableKvdb > 0 {
100- logrus .Infof ("Number of unavaliable KVDB members exceeds 1, temporarily skipping update for this node to prevent KVDB from going out of quorum " )
102+ // numUnavailableKvdb will be 0 or more when it is not a fresh install. We want to skip this for fresh install
103+ if _ , isKvdbNode := kvdbNodes [pod .Spec .NodeName ]; numUnavailableKvdb >= 0 && cluster .Spec .Kvdb != nil && cluster .Spec .Kvdb .Internal && isKvdbNode {
104+ // if number of unavailable kvdb nodes is greater than or equal to 1, or lesser than 3 entries are present in the kvdb map
105+ // then dont restart portworx on this node
106+ if numUnavailableKvdb > 0 || len (kvdbNodes ) < 3 {
107+ logrus .Infof ("One or more KVDB members are down, temporarily skipping update for this node to prevent KVDB from going out of quorum " )
101108 continue
102109 } else {
103110 numUnavailableKvdb ++
0 commit comments