This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-persistence-r2dbc.git


The following commit(s) were added to refs/heads/main by this push:
     new c6ec8d1  try to improve waits for docker startups in CI (#407)
c6ec8d1 is described below

commit c6ec8d1981735f9a453a6b5f190ed9b9423d7593
Author: PJ Fanning <[email protected]>
AuthorDate: Mon Jun 15 16:30:42 2026 +0100

    try to improve waits for docker startups in CI (#407)
    
    * try to improve waits for docker startups in CI
    
    * Update build-test.yml
    
    * try again
    
    * change again
    
    * Update build-test.yml
    
    * Update build-test.yml
---
 .github/workflows/build-test.yml   | 48 +++++++++++++++++++++++++++++++-------
 docker/docker-compose-postgres.yml |  6 +++++
 2 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 8065751..3b86b8b 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -78,9 +78,16 @@ jobs:
 
       - name: Start DB
         run: |-
-          docker compose -f docker/docker-compose-postgres.yml up -d
-          # TODO: could we poll the port instead of sleep?
-          sleep 10
+          docker compose -f docker/docker-compose-postgres.yml up -d --wait
+          # loop to wait for the DB to be ready
+          for i in {1..8}; do
+            if docker exec -i docker-postgres-db-1 psql -U postgres \
+                -t -c 'SELECT 1;' 2>/dev/null; then
+              break
+            fi
+            echo "Retry $i: SQL check failed, waiting before retry..."
+            sleep $((i * 2))
+          done
           docker exec -i docker-postgres-db-1 psql -U postgres -t < 
ddl-scripts/create_tables_postgres.sql
           docker exec -i docker-postgres-db-1 psql -U postgres -t -c 'CREATE 
DATABASE database1;'
           docker exec -i docker-postgres-db-1 psql -U postgres -t -d database1 
< ddl-scripts/create_tables_postgres.sql
@@ -128,9 +135,16 @@ jobs:
 
       - name: Start DB
         run: |-
-          docker compose -f docker/docker-compose-postgres.yml up -d
-          # TODO: could we poll the port instead of sleep?
-          sleep 10
+          docker compose -f docker/docker-compose-postgres.yml up -d --wait
+          # loop to wait for the DB to be ready
+          for i in {1..8}; do
+            if docker exec -i docker-postgres-db-1 psql -U postgres \
+                -t -c 'SELECT 1;' 2>/dev/null; then
+              break
+            fi
+            echo "Retry $i: SQL check failed, waiting before retry..."
+            sleep $((i * 2))
+          done
           docker exec -i docker-postgres-db-1 psql -U postgres -t < 
ddl-scripts/create_tables_postgres_jsonb.sql
 
       - name: test
@@ -175,9 +189,16 @@ jobs:
 
       - name: Start DB
         run: |-
-          docker compose -f docker/docker-compose-yugabyte.yml up -d
-          # TODO: could we poll the port instead of sleep?
-          sleep 10
+          docker compose -f docker/docker-compose-yugabyte.yml up -d --wait
+          # loop to wait for the DB to be ready
+          for i in {1..8}; do
+            if docker exec -i yb-tserver-n1 /home/yugabyte/bin/ysqlsh \
+                -h yb-tserver-n1 -t -c 'SELECT 1;' 2>/dev/null; then
+              break
+            fi
+            echo "Retry $i: SQL check failed, waiting before retry..."
+            sleep $((i * 2))
+          done
           docker exec -i yb-tserver-n1 /home/yugabyte/bin/ysqlsh -h 
yb-tserver-n1 -t < ddl-scripts/create_tables_yugabyte.sql
           docker exec -i yb-tserver-n1 /home/yugabyte/bin/ysqlsh -h 
yb-tserver-n1 -t -c 'CREATE DATABASE database1;'
           docker exec -i yb-tserver-n1 /home/yugabyte/bin/ysqlsh -h 
yb-tserver-n1 -t -d database1 < ddl-scripts/create_tables_yugabyte.sql
@@ -226,6 +247,15 @@ jobs:
       - name: Start DB
         run: |-
           docker compose -f docker/docker-compose-mysql.yml up -d --wait
+          # loop to wait for the DB to be ready
+          for i in {1..8}; do
+            if docker exec -i docker-mysql-db-1 mysql \
+                -h 127.0.0.1 --user=root --password=root --database=mysql -e 
'SELECT 1;' 2>/dev/null; then
+              break
+            fi
+            echo "Retry $i: SQL check failed, waiting before retry..."
+            sleep $((i * 2))
+          done
           docker exec -i docker-mysql-db-1 mysql -h 127.0.0.1 --user=root 
--password=root --database=mysql < ddl-scripts/create_tables_mysql.sql
           docker exec -i docker-mysql-db-1 mysql -h 127.0.0.1 --user=root 
--password=root -e 'CREATE SCHEMA database1;'
           docker exec -i docker-mysql-db-1 mysql -h 127.0.0.1 --user=root 
--password=root --database=database1 < ddl-scripts/create_tables_mysql.sql
diff --git a/docker/docker-compose-postgres.yml 
b/docker/docker-compose-postgres.yml
index 351a6bb..eb83223 100644
--- a/docker/docker-compose-postgres.yml
+++ b/docker/docker-compose-postgres.yml
@@ -7,3 +7,9 @@ services:
     environment:
       POSTGRES_USER: postgres
       POSTGRES_PASSWORD: postgres
+    healthcheck:
+      test: ["CMD", "pg_isready", "-U", "postgres", "-h", "127.0.0.1"]
+      interval: 5s
+      timeout: 10s
+      retries: 12
+      start_period: 10s


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to