@@ -346,7 +346,31 @@ def gzip_then_base64_encode(s: str) -> str:
346
346
instance .terminate ()
347
347
raise TimeoutError ("init.sh failed to complete within the timeout period" )
348
348
349
+ < << << << HEAD
349
350
def is_healthy (ssh ) -> bool :
351
+ == == == =
352
+ # Check PostgreSQL logs directory
353
+ logger .info ("Checking PostgreSQL logs directory:" )
354
+ result = host .run ("sudo ls -la /var/log/postgresql/" )
355
+ logger .info (f"log directory contents:\n { result .stdout } \n { result .stderr } " )
356
+
357
+ # Check any existing PostgreSQL logs
358
+ logger .info ("Checking existing PostgreSQL logs:" )
359
+ result = host .run ("sudo cat /var/log/postgresql/*.log" )
360
+ logger .info (f"postgresql logs:\n { result .stdout } \n { result .stderr } " )
361
+
362
+ # Check the startup log
363
+ logger .info ("PostgreSQL startup log:" )
364
+ result = host .run (f"sudo cat { startup_log } " )
365
+ logger .info (f"startup log contents:\n { result .stdout } \n { result .stderr } " )
366
+
367
+ # Check PostgreSQL environment
368
+ logger .info ("PostgreSQL environment:" )
369
+ result = host .run ("sudo -u postgres env | grep POSTGRES" )
370
+ logger .info (f"postgres environment:\n { result .stdout } \n { result .stderr } " )
371
+
372
+ def is_healthy (host , instance_ip , ssh_identity_file ) - > bool :
373
+ >> >> >> > c2631e8c (test : reorg and print logs while waiting continue on other checks when ready )
350
374
health_checks = [
351
375
("postgres" , "sudo -u postgres /usr/bin/pg_isready -U postgres" ),
352
376
("adminapi" , f"curl -sf -k --connect-timeout 30 --max-time 60 https://localhost:8085/health -H 'apikey: { supabase_admin_key } '" ),
@@ -367,18 +391,36 @@ def is_healthy(ssh) -> bool:
367
391
logger .error (f"{ service } stderr: { cmd .stderr } " )
368
392
== == == =
369
393
if service == "postgres" :
370
- # For PostgreSQL, we need to check multiple things
371
394
pg_isready = check (host )
372
395
> >> >> >> 65 ef0692 (test : do not unpack result )
373
396
374
- if pg_isready .failed :
375
- logger .error ("PostgreSQL is not ready" )
376
- logger .error (f"pg_isready stdout: { pg_isready .stdout } " )
377
- logger .error (f"pg_isready stderr: { pg_isready .stderr } " )
397
+ # Always read and log the PostgreSQL logs first
398
+ logger .warning ("PostgreSQL status check:" )
399
+ try :
400
+ # Read both .log and .csv files
401
+ log_files = [
402
+ "/var/log/postgresql/*.log" ,
403
+ "/var/log/postgresql/*.csv"
404
+ ]
378
405
379
- # Run detailed checks since we know we have a working connection
380
- run_detailed_checks (host )
381
- return False
406
+ for log_pattern in log_files :
407
+ log_result = host .run (f"sudo cat { log_pattern } " )
408
+ if not log_result .failed :
409
+ logger .error (f"PostgreSQL logs from { log_pattern } :" )
410
+ logger .error (log_result .stdout )
411
+ if log_result .stderr :
412
+ logger .error (f"Log read errors: { log_result .stderr } " )
413
+ else :
414
+ logger .error (f"Failed to read PostgreSQL logs from { log_pattern } : { log_result .stderr } " )
415
+ except Exception as e :
416
+ logger .error (f"Error reading PostgreSQL logs: { str (e )} " )
417
+
418
+ # Then check the status and return
419
+ if not pg_isready .failed :
420
+ continue
421
+ # Wait before next attempt
422
+ sleep (5 )
423
+ return False
382
424
else :
383
425
cmd = check (host )
384
426
if cmd .failed is True :
0 commit comments