Skip to content

Commit aad53ce

Browse files
authored
fix<postgres>: schema job fail open and add example (#58)
Description of this PR schema upgrade job should fail open on db creation to handle already exist errors add example of cadence with postgres Local Test namespace and release name is still fixed unfortunately. cd charts/cadence helm install cadence-release . -n cadence-postgres --values examples/values.postgres.yaml
1 parent c4564bd commit aad53ce

File tree

4 files changed

+102
-52
lines changed

4 files changed

+102
-52
lines changed

charts/cadence/Chart.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
apiVersion: v2
22
name: cadence
3-
version: 1.0.8
3+
version: 1.0.9
44
appVersion: v1.3.5
55

66
description: |
7-
Cadence is a distributed, scalable, durable, and highly available orchestration engine
7+
Cadence is a distributed, scalable, durable, and highly available orchestration engine
88
to execute asynchronous long-running business logic in a scalable and resilient way.
99
This chart deploys Uber Cadence server components and web UI.
1010
@@ -39,4 +39,4 @@ dependencies:
3939
- name: mysql
4040
version: 12.x.x
4141
repository: oci://registry-1.docker.io/bitnamicharts
42-
condition: mysql.enabled
42+
condition: mysql.enabled

charts/cadence/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# cadence
22

3-
![Version: 1.0.8](https://img.shields.io/badge/Version-1.0.8-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.3.5](https://img.shields.io/badge/AppVersion-v1.3.5-informational?style=flat-square)
3+
![Version: 1.0.9](https://img.shields.io/badge/Version-1.0.9-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.3.5](https://img.shields.io/badge/AppVersion-v1.3.5-informational?style=flat-square)
44

55
Cadence is a distributed, scalable, durable, and highly available orchestration engine
66
to execute asynchronous long-running business logic in a scalable and resilient way.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Allow Bitnami charts to use legacy repository images
2+
global:
3+
security:
4+
allowInsecureImages: true
5+
6+
# Force Cadence to use PostgreSQL for main DB
7+
config:
8+
persistence:
9+
database:
10+
driver: "postgres"
11+
sql:
12+
hosts: "cadence-release-postgresql.cadence-postgres.svc.cluster.local"
13+
port: 5432
14+
dbname: "cadence"
15+
visibilityDbname: "cadence_visibility"
16+
user: "cadence"
17+
password: "changeme-strong"
18+
tls:
19+
enabled: false
20+
sslMode: ""
21+
22+
# Enable Cadence schema jobs
23+
schema:
24+
serverJob:
25+
enabled: true
26+
27+
# Deploy Postgres within the same release (Bitnami subchart)
28+
postgresql:
29+
enabled: true
30+
image:
31+
registry: docker.io
32+
repository: bitnamilegacy/postgresql
33+
tag: "16.4.0"
34+
pullPolicy: IfNotPresent
35+
auth:
36+
username: cadence
37+
password: "changeme-strong"
38+
database: cadence
39+
primary:
40+
persistence:
41+
enabled: true
42+
size: 8Gi
43+
44+
# Do NOT deploy ES, Cassandra or MySQL
45+
elasticsearch:
46+
enabled: false
47+
cassandra:
48+
enabled: false
49+
mysql:
50+
enabled: false

charts/cadence/templates/schema-server-job.yaml

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,21 @@ spec:
9191
certfile = $SSL_CERTFILE
9292
EOF
9393
fi
94-
94+
9595
# Add client certificate for mutual TLS
9696
if [ -n "$SSL_CLIENT_CERT" ] && [ "$SSL_CLIENT_CERT" != "" ]; then
9797
cat >> ~/.cassandra/cqlshrc << EOF
9898
usercert = $SSL_CLIENT_CERT
9999
EOF
100100
fi
101-
101+
102102
# Add client private key for mutual TLS
103103
if [ -n "$SSL_CLIENT_KEY" ] && [ "$SSL_CLIENT_KEY" != "" ]; then
104104
cat >> ~/.cassandra/cqlshrc << EOF
105105
userkey = $SSL_CLIENT_KEY
106106
EOF
107107
fi
108-
108+
109109
# Add validate setting
110110
if [ -n "$SSL_VALIDATE" ] && [ "$SSL_VALIDATE" != "" ]; then
111111
cat >> ~/.cassandra/cqlshrc << EOF
@@ -126,12 +126,12 @@ spec:
126126
# Build cqlsh command
127127
build_cqlsh_cmd() {
128128
local cmd="cqlsh"
129-
129+
130130
# Add SSL option if enabled
131131
if [ "$TLS_ENABLED" = "true" ]; then
132132
cmd="$cmd --ssl"
133133
fi
134-
134+
135135
echo "$cmd"
136136
}
137137
@@ -207,16 +207,16 @@ spec:
207207
if [ "$TLS_ENABLED" = "true" ] && [ -n "$SSL_MODE" ]; then
208208
# Set SSL mode as environment variable (psql reads PGSSLMODE)
209209
export PGSSLMODE="$SSL_MODE"
210-
210+
211211
# Add SSL certificate parameters as environment variables if provided
212212
if [ -n "$SSL_CERTFILE" ]; then
213213
export PGSSLROOTCERT="$SSL_CERTFILE"
214214
fi
215-
215+
216216
if [ -n "$SSL_CLIENT_CERT" ]; then
217217
export PGSSLCERT="$SSL_CLIENT_CERT"
218218
fi
219-
219+
220220
if [ -n "$SSL_CLIENT_KEY" ]; then
221221
export PGSSLKEY="$SSL_CLIENT_KEY"
222222
fi
@@ -288,7 +288,7 @@ spec:
288288
# Build connection string based on TLS configuration
289289
build_mysql_cmd() {
290290
local cmd="mariadb -h $DB_HOST -P $DB_PORT -u $DB_USER -p$MYSQL_PWD"
291-
291+
292292
# Add SSL parameters if TLS is enabled
293293
if [ "$TLS_ENABLED" = "true" ]; then
294294
case "$SSL_MODE" in
@@ -310,23 +310,23 @@ spec:
310310
cmd="$cmd --ssl"
311311
;;
312312
esac
313-
313+
314314
# Add SSL certificate parameters if provided
315315
if [ -n "$SSL_CERTFILE" ]; then
316316
cmd="$cmd --ssl-ca=$SSL_CERTFILE"
317317
fi
318-
318+
319319
if [ -n "$SSL_CLIENT_CERT" ]; then
320320
cmd="$cmd --ssl-cert=$SSL_CLIENT_CERT"
321321
fi
322-
322+
323323
if [ -n "$SSL_CLIENT_KEY" ]; then
324324
cmd="$cmd --ssl-key=$SSL_CLIENT_KEY"
325325
fi
326326
else
327327
cmd="$cmd --skip-ssl"
328328
fi
329-
329+
330330
echo "$cmd"
331331
}
332332
@@ -406,11 +406,11 @@ spec:
406406
set -e
407407
echo "Starting Cadence schema setup for driver: $DB_DRIVER"
408408
echo "=== Setting up Cassandra Schema ==="
409-
409+
410410
# Build cassandra-tool command with TLS options
411411
build_cassandra_cmd() {
412412
local cmd="cadence-cassandra-tool --ep $DB_HOST"
413-
413+
414414
# Add authentication
415415
if [ -n "$DB_USER" ]; then
416416
cmd="$cmd -u $DB_USER"
@@ -426,7 +426,7 @@ spec:
426426
if [ -n "$ALLOWED_AUTHENTICATORS" ]; then
427427
cmd="$cmd $ALLOWED_AUTHENTICATORS"
428428
fi
429-
429+
430430
# Add TLS options if enabled
431431
if [ "$TLS_ENABLED" = "true" ]; then
432432
cmd="$cmd --tls"
@@ -440,36 +440,36 @@ spec:
440440
cmd="$cmd --tls-key-file $SSL_CLIENT_KEY"
441441
fi
442442
fi
443-
443+
444444
echo "$cmd"
445445
}
446-
446+
447447
# Setup main database schema
448448
echo "Creating main keyspace: $DB_NAME"
449449
if [ "$DATA_CENTER" = "" ]; then
450-
$(build_cassandra_cmd) create -k $DB_NAME --rf $REPLICATION_FACTOR
450+
$(build_cassandra_cmd) create -k $DB_NAME --rf $REPLICATION_FACTOR || echo "Keyspace already exists"
451451
else
452-
$(build_cassandra_cmd) create -k $DB_NAME --rf $REPLICATION_FACTOR -dc $DATA_CENTER
452+
$(build_cassandra_cmd) create -k $DB_NAME --rf $REPLICATION_FACTOR -dc $DATA_CENTER || echo "Keyspace already exists"
453453
fi
454454
455455
echo "Setting up main schema version 0.0"
456456
$(build_cassandra_cmd) -k $DB_NAME setup-schema -v 0.0 || echo "Schema already exists"
457-
457+
458458
echo "Updating main schema to latest version"
459459
$(build_cassandra_cmd) -k $DB_NAME update-schema -d $CADENCE_HOME/schema/cassandra/cadence/versioned || echo "Rollback is not allowed"
460-
460+
461461
# Setup visibility database schema (only if ES is not enabled)
462462
if [ "$ES_ENABLED" = "false" ]; then
463463
echo "Creating visibility keyspace: $DB_VISIBILITY_NAME"
464464
if [ "$DATA_CENTER" = "" ]; then
465-
$(build_cassandra_cmd) create -k $DB_VISIBILITY_NAME --rf $REPLICATION_FACTOR
465+
$(build_cassandra_cmd) create -k $DB_VISIBILITY_NAME --rf $REPLICATION_FACTOR || echo "Keyspace already exists"
466466
else
467-
$(build_cassandra_cmd) create -k $DB_VISIBILITY_NAME --rf $REPLICATION_FACTOR -dc $DATA_CENTER
467+
$(build_cassandra_cmd) create -k $DB_VISIBILITY_NAME --rf $REPLICATION_FACTOR -dc $DATA_CENTER || echo "Keyspace already exists"
468468
fi
469469
470470
echo "Setting up visibility schema version 0.0"
471471
$(build_cassandra_cmd) -k $DB_VISIBILITY_NAME setup-schema -v 0.0 || echo "Schema already exists"
472-
472+
473473
echo "Updating visibility schema to latest version"
474474
$(build_cassandra_cmd) -k $DB_VISIBILITY_NAME update-schema -d $CADENCE_HOME/schema/cassandra/visibility/versioned || echo "Rollback is not allowed"
475475
else
@@ -538,7 +538,7 @@ spec:
538538
- name: CASSANDRA_TLS_SERVER_NAME
539539
value: {{ .Values.config.persistence.database.cassandra.tls.serverName | quote }}
540540
{{- end }}
541-
541+
542542
{{- else if eq $dbDriver "postgres" }}
543543
# PostgreSQL Schema Setup
544544
command:
@@ -548,11 +548,11 @@ spec:
548548
set -e
549549
echo "Starting Cadence schema setup for driver: $DB_DRIVER"
550550
echo "=== Setting up PostgreSQL Schema ==="
551-
551+
552552
# Build sql-tool command with TLS options
553553
build_postgres_cmd() {
554554
local cmd="cadence-sql-tool --ep $DB_HOST -p $DB_PORT -u $DB_USER -pw $POSTGRES_PWD --plugin postgres"
555-
555+
556556
# Add TLS options if enabled
557557
if [ "$TLS_ENABLED" = "true" ]; then
558558
cmd="$cmd --tls"
@@ -566,28 +566,28 @@ spec:
566566
cmd="$cmd --tls-key-file $SSL_CLIENT_KEY"
567567
fi
568568
fi
569-
569+
570570
echo "$cmd"
571571
}
572-
572+
573573
# Create main database
574574
echo "Creating main database: $DB_NAME"
575-
$(build_postgres_cmd) create-database --db $DB_NAME
576-
575+
$(build_postgres_cmd) create-database --db $DB_NAME || echo "Database already exists"
576+
577577
echo "Setting up main schema version 0.0"
578578
$(build_postgres_cmd) --db $DB_NAME setup-schema -v 0.0 || echo "Schema already exists"
579-
579+
580580
echo "Updating main schema to latest version"
581581
$(build_postgres_cmd) --db $DB_NAME update-schema -d $CADENCE_HOME/schema/postgres/cadence/versioned || echo "Rollback is not allowed"
582-
582+
583583
# Setup visibility database (only if ES is not enabled)
584584
if [ "$ES_ENABLED" = "false" ]; then
585585
echo "Creating visibility database: $DB_VISIBILITY_NAME"
586-
$(build_postgres_cmd) create-database --db $DB_VISIBILITY_NAME
587-
586+
$(build_postgres_cmd) create-database --db $DB_VISIBILITY_NAME || echo "Database already exists"
587+
588588
echo "Setting up visibility schema version 0.0"
589589
$(build_postgres_cmd) --db $DB_VISIBILITY_NAME setup-schema -v 0.0 || echo "Schema already exists"
590-
590+
591591
echo "Updating visibility schema to latest version"
592592
$(build_postgres_cmd) --db $DB_VISIBILITY_NAME update-schema -d $CADENCE_HOME/schema/postgres/visibility/versioned || echo "Rollback is not allowed"
593593
else
@@ -653,11 +653,11 @@ spec:
653653
set -e
654654
echo "Starting Cadence schema setup for driver: $DB_DRIVER"
655655
echo "=== Setting up MySQL Schema ==="
656-
656+
657657
# Build sql-tool command with TLS options
658658
build_mysql_cmd() {
659659
local cmd="cadence-sql-tool --ep $DB_HOST -p $DB_PORT -u $DB_USER -pw $MYSQL_PWD --plugin mysql"
660-
660+
661661
# Add TLS options if enabled
662662
if [ "$TLS_ENABLED" = "true" ]; then
663663
cmd="$cmd --tls"
@@ -671,34 +671,34 @@ spec:
671671
cmd="$cmd --tls-key-file $SSL_CLIENT_KEY"
672672
fi
673673
fi
674-
674+
675675
echo "$cmd"
676676
}
677-
677+
678678
# Create main database
679679
echo "Creating main database: $DB_NAME"
680680
$(build_mysql_cmd) create-database --db $DB_NAME || echo "Database already exists"
681-
681+
682682
echo "Setting up main schema version 0.0"
683683
$(build_mysql_cmd) --db $DB_NAME setup-schema -v 0.0 || echo "Schema already exists"
684-
684+
685685
echo "Updating main schema to latest version"
686686
$(build_mysql_cmd) --db $DB_NAME update-schema -d $CADENCE_HOME/schema/mysql/v8/cadence/versioned || echo "Rollback is not allowed"
687-
687+
688688
# Setup visibility database (only if ES is not enabled)
689689
if [ "$ES_ENABLED" = "false" ]; then
690690
echo "Creating visibility database: $DB_VISIBILITY_NAME"
691691
$(build_mysql_cmd) create-database --db $DB_VISIBILITY_NAME || echo "Database already exists"
692-
692+
693693
echo "Setting up visibility schema version 0.0"
694694
$(build_mysql_cmd) --db $DB_VISIBILITY_NAME setup-schema -v 0.0 || echo "Schema already exists"
695-
695+
696696
echo "Updating visibility schema to latest version"
697697
$(build_mysql_cmd) --db $DB_VISIBILITY_NAME update-schema -d $CADENCE_HOME/schema/mysql/v8/visibility/versioned || echo "Rollback is not allowed"
698698
else
699699
echo "Skipping visibility schema setup (Elasticsearch enabled)"
700700
fi
701-
701+
702702
echo "Schema setup completed successfully!"
703703
env:
704704
# Common environment variables
@@ -761,4 +761,4 @@ spec:
761761
{{- with .Values.global.tls.volumes }}
762762
{{- toYaml . | nindent 6 }}
763763
{{- end }}
764-
{{- end }}
764+
{{- end }}

0 commit comments

Comments
 (0)