@@ -30,6 +30,7 @@ import (
30
30
"github.com/percona/percona-postgresql-operator/internal/logging"
31
31
"github.com/percona/percona-postgresql-operator/internal/naming"
32
32
"github.com/percona/percona-postgresql-operator/internal/pgaudit"
33
+ "github.com/percona/percona-postgresql-operator/internal/pgrepack"
33
34
"github.com/percona/percona-postgresql-operator/internal/pgstatmonitor"
34
35
"github.com/percona/percona-postgresql-operator/internal/pgstatstatements"
35
36
"github.com/percona/percona-postgresql-operator/internal/pgvector"
@@ -245,7 +246,7 @@ func (r *Reconciler) reconcilePostgresDatabases(
245
246
246
247
// Calculate a hash of the SQL that should be executed in PostgreSQL.
247
248
// K8SPG-375, K8SPG-577, K8SPG-699
248
- var pgAuditOK, pgStatMonitorOK, pgStatStatementsOK, pgvectorOK, postgisInstallOK bool
249
+ var pgAuditOK, pgStatMonitorOK, pgStatStatementsOK, pgvectorOK, pgRepackOK, postgisInstallOK bool
249
250
create := func(ctx context.Context, exec postgres.Executor) error {
250
251
// validate version string before running it in database
251
252
_, err := gover.NewVersion(cluster.Labels[naming.LabelVersion])
@@ -319,6 +320,19 @@ func (r *Reconciler) reconcilePostgresDatabases(
319
320
}
320
321
}
321
322
323
+ // K8SPG-574
324
+ if cluster.Spec.Extensions.PGRepack {
325
+ if pgRepackOK = pgrepack.EnableInPostgreSQL(ctx, exec) == nil; !pgRepackOK {
326
+ r.Recorder.Event(cluster, corev1.EventTypeWarning, "pgRepackDisabled",
327
+ "Unable to install pg_repack")
328
+ }
329
+ } else {
330
+ if pgRepackOK = pgrepack.DisableInPostgreSQL(ctx, exec) == nil; !pgRepackOK {
331
+ r.Recorder.Event(cluster, corev1.EventTypeWarning, "pgRepackEnabled",
332
+ "Unable to disable pg_repack")
333
+ }
334
+ }
335
+
322
336
// Enabling PostGIS extensions is a one-way operation
323
337
// e.g., you can take a PostgresCluster and turn it into a PostGISCluster,
324
338
// but you cannot reverse the process, as that would potentially remove an extension
@@ -364,7 +378,7 @@ func (r *Reconciler) reconcilePostgresDatabases(
364
378
err = errors.WithStack(create(logging.NewContext(ctx, log), podExecutor))
365
379
}
366
380
// K8SPG-472
367
- if err == nil && pgStatMonitorOK && pgAuditOK && pgvectorOK && postgisInstallOK {
381
+ if err == nil && pgStatMonitorOK && pgAuditOK && pgvectorOK && postgisInstallOK && pgRepackOK {
368
382
cluster.Status.DatabaseRevision = revision
369
383
}
370
384
@@ -659,7 +673,6 @@ func (r *Reconciler) reconcilePostgresDataVolume(
659
673
instanceSpec *v1beta1.PostgresInstanceSetSpec, instance *appsv1.StatefulSet,
660
674
clusterVolumes []corev1.PersistentVolumeClaim, sourceCluster *v1beta1.PostgresCluster,
661
675
) (*corev1.PersistentVolumeClaim, error) {
662
-
663
676
labelMap := map[string]string{
664
677
naming.LabelCluster: cluster.Name,
665
678
naming.LabelInstanceSet: instanceSpec.Name,
@@ -743,7 +756,8 @@ func (r *Reconciler) reconcilePostgresDataVolume(
743
756
// setVolumeSize compares the potential sizes from the instance spec, status
744
757
// and limit and sets the appropriate current value.
745
758
func (r *Reconciler) setVolumeSize(ctx context.Context, cluster *v1beta1.PostgresCluster,
746
- pvc *corev1.PersistentVolumeClaim, instanceSpecName string) {
759
+ pvc *corev1.PersistentVolumeClaim, instanceSpecName string,
760
+ ) {
747
761
log := logging.FromContext(ctx)
748
762
749
763
// Store the limit for this instance set. This value will not change below.
@@ -818,7 +832,6 @@ func (r *Reconciler) reconcileTablespaceVolumes(
818
832
instanceSpec *v1beta1.PostgresInstanceSetSpec, instance *appsv1.StatefulSet,
819
833
clusterVolumes []corev1.PersistentVolumeClaim,
820
834
) (tablespaceVolumes []*corev1.PersistentVolumeClaim, err error) {
821
-
822
835
if !feature.Enabled(ctx, feature.TablespaceVolumes) {
823
836
return
824
837
}
@@ -893,7 +906,6 @@ func (r *Reconciler) reconcilePostgresWALVolume(
893
906
instanceSpec *v1beta1.PostgresInstanceSetSpec, instance *appsv1.StatefulSet,
894
907
observed *Instance, clusterVolumes []corev1.PersistentVolumeClaim,
895
908
) (*corev1.PersistentVolumeClaim, error) {
896
-
897
909
labelMap := map[string]string{
898
910
naming.LabelCluster: cluster.Name,
899
911
naming.LabelInstanceSet: instanceSpec.Name,
@@ -992,7 +1004,8 @@ func (r *Reconciler) reconcilePostgresWALVolume(
992
1004
// DatabaseInitSQL is defined, the function will find the primary pod and run
993
1005
// SQL from the defined ConfigMap
994
1006
func (r *Reconciler) reconcileDatabaseInitSQL(ctx context.Context,
995
- cluster *v1beta1.PostgresCluster, instances *observedInstances) error {
1007
+ cluster *v1beta1.PostgresCluster, instances *observedInstances,
1008
+ ) error {
996
1009
log := logging.FromContext(ctx)
997
1010
998
1011
// Spec is not defined, unset status and return
0 commit comments