You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by ad...@apache.org on 2026/02/24 06:07:54 UTC

(druid-operator) 01/01: fix pvc volume expansion issue

This is an automated email from the ASF dual-hosted git repository.

adheipsingh pushed a commit to branch 1.3.0-pvc-expansion-fix
in repository https://gitbox.apache.org/repos/asf/druid-operator.git

commit 4a11c07d1498165070ab0bf028aaec1eb1dc395a
Author: AdheipSingh <ad...@gmail.com>
AuthorDate: Fri Sep 26 19:48:39 2025 +0530

    fix pvc volume expansion issue
---
 controllers/druid/volume_expansion.go | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/controllers/druid/volume_expansion.go b/controllers/druid/volume_expansion.go
index 3ae6ee0..d2c888d 100644
--- a/controllers/druid/volume_expansion.go
+++ b/controllers/druid/volume_expansion.go
@@ -4,6 +4,7 @@ import (
 	"context"
 	"errors"
 	"fmt"
+	"strings"
 
 	"github.com/datainfrahq/druid-operator/apis/druid/v1alpha1"
 	appsv1 "k8s.io/api/apps/v1"
@@ -162,17 +163,34 @@ func scalePVCForSts(ctx context.Context, sdk client.Client, nodeSpec *v1alpha1.D
 
 		}
 
+		// Get the volume claim template name for this index
+		volumeClaimTemplateName := nodeSpec.VolumeClaimTemplates[i].Name
+
 		// In case size dont match, patch the pvc with the desiredsize from druid CR
-		for p := range pvcSize {
-			pSize, _ := pvcSize[p].AsInt64()
+		for p := range pvcList {
+			pvcObj := pvcList[p].(*v1.PersistentVolumeClaim)
+
+			// Extract the volume template name from PVC name
+			// PVC name format: {volumeClaimTemplateName}-{statefulSetName}-{ordinal}
+			stsName := sts.(*appsv1.StatefulSet).Name
+			expectedPrefix := fmt.Sprintf("%s-%s-", volumeClaimTemplateName, stsName)
+
+			// Skip if this PVC doesn't match the current volume claim template
+			if !strings.HasPrefix(pvcObj.Name, expectedPrefix) {
+				continue
+			}
+
+			pvcQuantity := pvcObj.Spec.Resources.Requests[v1.ResourceStorage]
+			pSize, _ := pvcQuantity.AsInt64()
+
 			if desiredSize != pSize {
 				// use deepcopy
-				patch := client.MergeFrom(pvcList[p].(*v1.PersistentVolumeClaim).DeepCopy())
-				pvcList[p].(*v1.PersistentVolumeClaim).Spec.Resources.Requests[v1.ResourceStorage] = desVolumeClaimTemplateSize[i]
-				if err := writers.Patch(ctx, sdk, drd, pvcList[p].(*v1.PersistentVolumeClaim), false, patch, emitEvent); err != nil {
+				patch := client.MergeFrom(pvcObj.DeepCopy())
+				pvcObj.Spec.Resources.Requests[v1.ResourceStorage] = desVolumeClaimTemplateSize[i]
+				if err := writers.Patch(ctx, sdk, drd, pvcObj, false, patch, emitEvent); err != nil {
 					return err
 				} else {
-					msg := fmt.Sprintf("[PVC:%s] successfully Patched with [Size:%s]", pvcList[p].(*v1.PersistentVolumeClaim).Name, desVolumeClaimTemplateSize[i].String())
+					msg := fmt.Sprintf("[PVC:%s] successfully Patched with [Size:%s]", pvcObj.Name, desVolumeClaimTemplateSize[i].String())
 					logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace)
 				}
 			}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org