@@ -39,10 +39,10 @@ if [ "$REFRESH_PARALLEL" = "true" ]; then
3939 HEAVY_WORK_MEM=" ${HEAVY_WORK_MEM:- 512MB} "
4040 HEAVY_MAINT_MEM=" ${HEAVY_MAINT_MEM:- 4GB} "
4141else
42- LIGHT_WORK_MEM=" ${LIGHT_WORK_MEM:- 4GB } "
43- LIGHT_MAINT_MEM=" ${LIGHT_MAINT_MEM:- 8GB } "
44- HEAVY_WORK_MEM=" ${HEAVY_WORK_MEM:- 8GB } "
45- HEAVY_MAINT_MEM=" ${HEAVY_MAINT_MEM:- 16GB } "
42+ LIGHT_WORK_MEM=" ${LIGHT_WORK_MEM:- 2GB } "
43+ LIGHT_MAINT_MEM=" ${LIGHT_MAINT_MEM:- 4GB } "
44+ HEAVY_WORK_MEM=" ${HEAVY_WORK_MEM:- 4GB } "
45+ HEAVY_MAINT_MEM=" ${HEAVY_MAINT_MEM:- 8GB } "
4646fi
4747
4848function refresh_mviews_group() {
@@ -62,6 +62,7 @@ function refresh_mviews_group() {
6262 local run_loop=" ${REFRESH_LOOP:- true} "
6363
6464 while true ; do
65+ local connection_error=false
6566 for mview in " ${materialized_views[@]} " ; do
6667 log_message " [$group_name ] Refreshing $mview (work_mem=$work_mem , maintenance_work_mem=$maint_mem )..."
6768 local error_output
@@ -78,17 +79,25 @@ function refresh_mviews_group() {
7879 else
7980 log_message " [$group_name ] ❌ ERROR refreshing $mview ! Exit code: $exit_code "
8081 log_message " [$group_name ] ❌ Error details: $error_output "
81- if echo " $error_output " | grep -qi " connection\|could not connect\|server closed\|SSL" ; then
82- log_message " [$group_name ] ⚠️ Connection error detected. Waiting ${sleep_interval} s before retrying all views..."
82+ if echo " $error_output " | grep -qi " connection\|could not connect\|server closed\|SSL\|recovery mode" ; then
83+ log_message " [$group_name ] ⚠️ Connection error detected. Waiting 180s for DB to recover..."
84+ connection_error=true
85+ sleep 180
8386 break
8487 fi
8588 fi
8689 done
8790
91+ # If connection error in sequential mode, signal caller to stop
92+ if [ " $connection_error " = true ] && [ " $run_loop " != " true" ]; then
93+ log_message " [$group_name ] Connection error during single pass. Returning error."
94+ return 2
95+ fi
96+
8897 # If REFRESH_LOOP=false, run once and exit (used in sequential mode)
8998 if [ " $run_loop " != " true" ]; then
9099 log_message " [$group_name ] Completed single pass."
91- return
100+ return 0
92101 fi
93102 sleep " $sleep_interval "
94103 done
@@ -309,24 +318,25 @@ if [ "$REFRESH_PARALLEL" = "true" ]; then
309318else
310319 log_message " Starting SEQUENTIAL refresh of materialized views..."
311320 REFRESH_LOOP=false
321+ SEQUENTIAL_SLEEP_INTERVAL=" ${SEQUENTIAL_SLEEP_INTERVAL:- 120} "
312322 while true ; do
313323 start_time=$SECONDS
314324
315325 # Heavy groups
316- refresh_mviews_group " ADMIN_BOUNDARIES_LINES" 1 heavy " ${admin_boundaries_lines_views[@]} "
317- refresh_mviews_group " ADMIN_BOUNDARIES_AREAS_CENTROIDS" 1 heavy " ${admin_boundaries_areas_centroids_views[@]} "
318- refresh_mviews_group " TRANSPORTS" 1 heavy " ${transport_views[@]} "
326+ refresh_mviews_group " ADMIN_BOUNDARIES_LINES" 1 heavy " ${admin_boundaries_lines_views[@]} " || true
327+ refresh_mviews_group " ADMIN_BOUNDARIES_AREAS_CENTROIDS" 1 heavy " ${admin_boundaries_areas_centroids_views[@]} " || true
328+ refresh_mviews_group " TRANSPORTS" 1 heavy " ${transport_views[@]} " || true
319329
320330 # Light groups
321- refresh_mviews_group " ADMIN_MARITIME_LINES" 1 light " ${admin_maritime_lines_views[@]} "
322- refresh_mviews_group " AMENITY" 1 light " ${amenity_views[@]} "
323- refresh_mviews_group " LANDUSE" 1 light " ${landuse_views[@]} "
324- refresh_mviews_group " OTHERS" 1 light " ${others_views[@]} "
325- refresh_mviews_group " COMMUNICATION" 1 light " ${communication_views[@]} "
326- refresh_mviews_group " PLACES" 1 light " ${places_views[@]} "
327- refresh_mviews_group " WATER" 1 light " ${water_views[@]} "
328- refresh_mviews_group " BUILDINGS" 1 light " ${buildings_views[@]} "
329- refresh_mviews_group " ROUTES" 1 light " ${routes_views[@]} "
331+ refresh_mviews_group " ADMIN_MARITIME_LINES" 1 light " ${admin_maritime_lines_views[@]} " || true
332+ refresh_mviews_group " AMENITY" 1 light " ${amenity_views[@]} " || true
333+ refresh_mviews_group " LANDUSE" 1 light " ${landuse_views[@]} " || true
334+ refresh_mviews_group " OTHERS" 1 light " ${others_views[@]} " || true
335+ refresh_mviews_group " COMMUNICATION" 1 light " ${communication_views[@]} " || true
336+ refresh_mviews_group " PLACES" 1 light " ${places_views[@]} " || true
337+ refresh_mviews_group " WATER" 1 light " ${water_views[@]} " || true
338+ refresh_mviews_group " BUILDINGS" 1 light " ${buildings_views[@]} " || true
339+ refresh_mviews_group " ROUTES" 1 light " ${routes_views[@]} " || true
330340
331341 elapsed=$(( SECONDS - start_time))
332342 log_message " Sequential refresh cycle completed in ${elapsed} s. Sleeping ${SEQUENTIAL_SLEEP_INTERVAL} s..."
0 commit comments