@@ -500,7 +500,6 @@ func (c *Cluster) validateResources(spec *acidv1.PostgresSpec) error {
500
500
const (
501
501
cpuMinLimit = "256m"
502
502
memoryMinLimit = "256Mi"
503
- volumeMinSize = "1Gi"
504
503
)
505
504
506
505
var (
@@ -530,15 +529,6 @@ func (c *Cluster) validateResources(spec *acidv1.PostgresSpec) error {
530
529
}
531
530
}
532
531
533
- volumeSize := spec .Volume .Size
534
- isSmaller , err = util .IsSmallerQuantity (volumeSize , volumeMinSize )
535
- if err != nil {
536
- return fmt .Errorf ("error validating volume size: %v" , err )
537
- }
538
- if isSmaller {
539
- return fmt .Errorf ("defined volume size %s is below required minimum %s to properly run postgresql resource" , volumeSize , volumeMinSize )
540
- }
541
-
542
532
return nil
543
533
}
544
534
@@ -552,6 +542,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
552
542
c .mu .Lock ()
553
543
defer c .mu .Unlock ()
554
544
545
+ oldStatus := c .Status
555
546
c .setStatus (acidv1 .ClusterStatusUpdating )
556
547
c .setSpec (newSpec )
557
548
@@ -563,6 +554,21 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
563
554
}
564
555
}()
565
556
557
+ // check if pod resources were edited below the enforced minimum limits
558
+ if err := c .validateResources (& newSpec .Spec ); err != nil {
559
+ err = fmt .Errorf ("insufficient resource limits specified: %v" , err )
560
+
561
+ isCPULimitSmaller , err2 := util .IsSmallerQuantity (newSpec .Spec .Resources .ResourceLimits .CPU , oldSpec .Spec .Resources .ResourceLimits .CPU )
562
+ isMemoryLimitSmaller , err3 := util .IsSmallerQuantity (newSpec .Spec .Resources .ResourceLimits .Memory , oldSpec .Spec .Resources .ResourceLimits .Memory )
563
+
564
+ if oldStatus .Running () && ! isCPULimitSmaller && ! isMemoryLimitSmaller && err2 == nil && err3 == nil {
565
+ c .logger .Warning (err )
566
+ } else {
567
+ updateFailed = true
568
+ return err
569
+ }
570
+ }
571
+
566
572
if oldSpec .Spec .PgVersion != newSpec .Spec .PgVersion { // PG versions comparison
567
573
c .logger .Warningf ("postgresql version change(%q -> %q) has no effect" , oldSpec .Spec .PgVersion , newSpec .Spec .PgVersion )
568
574
//we need that hack to generate statefulset with the old version
@@ -595,12 +601,6 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
595
601
}
596
602
}
597
603
598
- // check pod resources and volume size and cancel update if they are too low
599
- if err := c .validateResources (& c .Spec ); err != nil {
600
- updateFailed = true
601
- return fmt .Errorf ("insufficient resource limits specified: %v" , err )
602
- }
603
-
604
604
// Volume
605
605
if oldSpec .Spec .Size != newSpec .Spec .Size {
606
606
c .logger .Debugf ("syncing persistent volumes" )
0 commit comments