Skip to content

Commit a976f52

Browse files
committed
Merge branch '221-max-wal-senders' into 'master'
fix: use prod max_wal_senders for the sync instance and clones if it has not a default value (postgres-ai#221) Closes postgres-ai#221 See merge request postgres-ai/database-lab!283
2 parents db1023d + 2253777 commit a976f52

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

pkg/retrieval/engine/postgres/physical/physical.go

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ var (
4848
"max_locks_per_xact": "max_locks_per_transaction",
4949
"max_worker_processes": "max_worker_processes",
5050
"track_commit_timestamp": "track_commit_timestamp",
51+
"max_wal_senders": "max_wal_senders",
5152
}
5253
)
5354

pkg/retrieval/engine/postgres/physical/physical_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ wal_level setting: logical
1919
wal_log_hints setting: on
2020
max_connections setting: 500
2121
max_worker_processes setting: 8
22-
max_prepared_xacts setting: 0
22+
max_prepared_xacts setting: 3
2323
max_locks_per_xact setting: 128
2424
track_commit_timestamp setting: off
25+
max_wal_senders setting: 15
2526
`)
2627

2728
expectedSettings := map[string]string{
2829
"max_connections": "500",
2930
"max_locks_per_transaction": "128",
30-
"max_prepared_transactions": "0",
31+
"max_prepared_transactions": "3",
3132
"max_worker_processes": "8",
3233
"track_commit_timestamp": "off",
34+
"max_wal_senders": "15",
3335
}
3436

3537
settings, err := extractControlDataParams(context.Background(), controlDataOutput)

test/3.physical_walg.sh

+26-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ set -euxo pipefail # ----
5050
sed -ri "s/:13/:${POSTGRES_VERSION}/g" ~/.dblab/server.yml
5151
# reduce shared_buffers (optional)
5252
sed -ri "s/^(\s*)(shared_buffers:.*$)/\1shared_buffers: 512MB/" ~/.dblab/server.yml
53-
53+
# skip snapshotting on start to replace some Postgres parameters after PGDATA receiving
54+
sed -ri "s/^(\s*)(skipStartSnapshot:.*$)/\1skipStartSnapshot: true/" ~/.dblab/server.yml
5455

5556
## Launch Database Lab server
5657
sudo docker run \
@@ -75,6 +76,27 @@ for i in {1..30}; do
7576
sleep 10
7677
done
7778

79+
# Test increasing default configuration parameters from pg_controldata. If the Database Lab Engine will start successfully, the test is passed.
80+
sudo docker exec -it dblab_server bash -c 'echo -e "\nmax_connections = 300" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
81+
sudo docker exec -it dblab_server bash -c 'echo "max_prepared_transactions = 5" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
82+
sudo docker exec -it dblab_server bash -c 'echo "max_locks_per_transaction = 100" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
83+
sudo docker exec -it dblab_server bash -c 'echo "max_worker_processes = 12" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
84+
sudo docker exec -it dblab_server bash -c 'echo "track_commit_timestamp = on" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
85+
sudo docker exec -it dblab_server bash -c 'echo "max_wal_senders = 15" >> /var/lib/dblab/dblab_pool/data/postgresql.dblab.postgresql.conf'
86+
87+
# Enable snapshotting on start to make a new snapshot
88+
sed -ri "s/^(\s*)(skipStartSnapshot:.*$)/\1skipStartSnapshot: false/" ~/.dblab/server.yml
89+
90+
sudo docker restart dblab_server
91+
92+
# Check the Database Lab Engine logs
93+
sudo docker logs dblab_server -f 2>&1 | awk '{print "[CONTAINER dblab_server]: "$0}' &
94+
95+
### Waiting for the Database Lab Engine initialization.
96+
for i in {1..30}; do
97+
curl http://localhost:2345 > /dev/null 2>&1 && break || echo "dblab is not ready yet"
98+
sleep 10
99+
done
78100

79101
### Step 3. Start cloning
80102

@@ -101,6 +123,9 @@ dblab clone create \
101123
--password secret_password \
102124
--id testclone
103125

126+
PGPASSWORD=secret_password psql \
127+
"host=localhost port=6000 user=dblab_user_1 dbname=test" -c 'show max_wal_senders'
128+
104129
# Connect to a clone and check the available table
105130
PGPASSWORD=secret_password psql \
106131
"host=localhost port=6000 user=dblab_user_1 dbname=postgres" -c '\dt+'

0 commit comments

Comments
 (0)