Skip to content

Commit f2b450a

Browse files
gkecheleo007
authored andcommitted
K8SPG-893 configure LC_ALL and LANG for database containers (#1350)
* K8SPG-893 configure LC_ALL and LANG for database containers * copy env from database to upgrade container * fix tests * guard with version 2.8 * fix * set version to latest for unit test pod allow volume grow * add only the needed env vars instead of the whole database env * fix unit test
1 parent 5a2ced4 commit f2b450a

File tree

4 files changed

+51
-1
lines changed

4 files changed

+51
-1
lines changed

internal/controller/pgupgrade/jobs.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,20 @@ func (r *PGUpgradeReconciler) generateUpgradeJob(
203203
SecurityContext: database.SecurityContext,
204204
VolumeMounts: volumeMounts, // K8SPG-254
205205

206+
// K8SPG-893
207+
Env: []corev1.EnvVar{
208+
// Critical for major upgrades to avoid lc_collate mismatches.
209+
// - https://www.postgresql.org/docs/current/locale.html
210+
{
211+
Name: "LC_ALL",
212+
Value: "en_US.utf-8",
213+
},
214+
{
215+
Name: "LANG",
216+
Value: "en_US.utf-8",
217+
},
218+
},
219+
206220
// Use our upgrade command and the specified image and resources.
207221
Command: upgradeCommand(
208222
upgrade.Spec.FromPostgresVersion,

internal/controller/pgupgrade/jobs_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@ spec:
203203
- upgrade
204204
- "19"
205205
- "25"
206+
env:
207+
- name: LC_ALL
208+
value: en_US.utf-8
209+
- name: LANG
210+
value: en_US.utf-8
206211
image: img4
207212
name: database
208213
resources:

internal/postgres/config.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,21 @@ func Environment(cluster *v1beta1.PostgresCluster) []corev1.EnvVar {
164164
})
165165
}
166166

167+
if cluster.CompareVersion("2.8.0") >= 0 {
168+
env = append(env, []corev1.EnvVar{
169+
// Critical for major upgrades to avoid lc_collate mismatches.
170+
// - https://www.postgresql.org/docs/current/locale.html
171+
{
172+
Name: "LC_ALL",
173+
Value: "en_US.utf-8",
174+
},
175+
{
176+
Name: "LANG",
177+
Value: "en_US.utf-8",
178+
},
179+
}...)
180+
}
181+
167182
return env
168183
}
169184

internal/postgres/reconcile_test.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ containers:
138138
value: /tmp
139139
- name: LDAPTLS_CACERT
140140
value: /etc/postgres/ldap/ca.crt
141+
- name: LC_ALL
142+
value: en_US.utf-8
143+
- name: LANG
144+
value: en_US.utf-8
141145
imagePullPolicy: Always
142146
name: database
143147
ports:
@@ -289,6 +293,10 @@ initContainers:
289293
value: /tmp
290294
- name: LDAPTLS_CACERT
291295
value: /etc/postgres/ldap/ca.crt
296+
- name: LC_ALL
297+
value: en_US.utf-8
298+
- name: LANG
299+
value: en_US.utf-8
292300
imagePullPolicy: Always
293301
name: postgres-startup
294302
resources:
@@ -713,7 +721,7 @@ func TestInstancePodAllowVolumeGrow(t *testing.T) {
713721
cluster.Spec.ImagePullPolicy = corev1.PullAlways
714722
cluster.Spec.PostgresVersion = 11
715723
cluster.SetLabels(map[string]string{
716-
naming.LabelVersion: "2.7.0",
724+
naming.LabelVersion: version.Version(),
717725
})
718726

719727
dataVolume := new(corev1.PersistentVolumeClaim)
@@ -781,6 +789,10 @@ containers:
781789
value: /tmp
782790
- name: LDAPTLS_CACERT
783791
value: /etc/postgres/ldap/ca.crt
792+
- name: LC_ALL
793+
value: en_US.utf-8
794+
- name: LANG
795+
value: en_US.utf-8
784796
imagePullPolicy: Always
785797
name: database
786798
ports:
@@ -946,6 +958,10 @@ initContainers:
946958
value: /tmp
947959
- name: LDAPTLS_CACERT
948960
value: /etc/postgres/ldap/ca.crt
961+
- name: LC_ALL
962+
value: en_US.utf-8
963+
- name: LANG
964+
value: en_US.utf-8
949965
imagePullPolicy: Always
950966
name: postgres-startup
951967
resources:

0 commit comments

Comments
 (0)