77source /docker-entrypoint.sh
88docker_setup_env
99
10+
11+ # Check for presence of old/new directories, indicating a failed previous autoupgrade
12+ echo " ----------------------------------------------------------------------"
13+ echo " Checking for left over artifacts from a failed previous autoupgrade..."
14+ echo " ----------------------------------------------------------------------"
15+ OLD=" ${PGDATA} /old"
16+ NEW=" ${PGDATA} /new"
17+ if [ -d " ${OLD} " ]; then
18+ echo " *****************************************"
19+ echo " Left over OLD directory found. Aborting."
20+ echo " *****************************************"
21+ exit 10
22+ fi
23+ if [ -d " ${NEW} " ]; then
24+ echo " *****************************************"
25+ echo " Left over NEW directory found. Aborting."
26+ echo " *****************************************"
27+ exit 11
28+ fi
29+ echo " -------------------------------------------------------------------------------"
30+ echo " No artifacts found from a failed previous autoupgrade. Continuing the process."
31+ echo " -------------------------------------------------------------------------------"
32+
33+ echo " DB STATUS: "
34+ pg_ctl -D " $PGDATA " status
35+
1036if [ -n " $DATABASE_ALREADY_EXISTS " ]; then
1137
1238 echo " -----------------------------------------"
13- echo " Performing checks on existing database..."
14- echo " -----------------------------------------"
39+ echo " Performing checks on existing database..."
40+ echo " -----------------------------------------"
41+
42+ # Just make sure postgres isn't still running for some reason
43+ set +e
44+ pg_ctl -D " $PGDATA " -m immedate stop
45+ set -e
46+
47+ # Remove any stale PID file
48+ rm -f " ${PGDATA} /postmaster.pid"
1549
1650 # Make sure timescaledb library is set to preload (won't work otherwise)
17- echo " ---------------------------------------------------------------------------------------"
51+ echo " ---------------------------------------------------------------------------------------"
1852 echo " Existing postgresql.conf found checking for shared_preload_libraries = 'timescaledb'..."
19- echo " ---------------------------------------------------------------------------------------"
53+ echo " ---------------------------------------------------------------------------------------"
2054 RESULT=$( cat " $PGDATA /postgresql.conf" | grep " ^shared_preload_libraries = 'timescaledb'" || true)
2155
2256 if [ -n " $RESULT " ]; then
23- echo " -------------------------------------------"
24- echo " Timescale DB library already set to preload"
25- echo " -------------------------------------------"
57+ echo " -------------------------------------------"
58+ echo " Timescale DB library already set to preload"
59+ echo " -------------------------------------------"
2660 else
27- echo " ------------------------------------------------------------------"
28- echo " Adding shared_preload_libraries = 'timescaledb' to postgresql.conf"
29- echo " ------------------------------------------------------------------"
30- echo " shared_preload_libraries = 'timescaledb'" >> " $PGDATA /postgresql.conf"
31- echo " timescaledb.telemetry_level=off" >> " $PGDATA /postgresql.conf"
61+ echo " ------------------------------------------------------------------"
62+ echo " Adding shared_preload_libraries = 'timescaledb' to postgresql.conf"
63+ echo " ------------------------------------------------------------------"
64+ echo " shared_preload_libraries = 'timescaledb'" >> " $PGDATA /postgresql.conf"
65+ echo " timescaledb.telemetry_level=off" >> " $PGDATA /postgresql.conf"
3266 fi
3367
3468 # #######################################################################################
@@ -59,28 +93,6 @@ if [ -n "$DATABASE_ALREADY_EXISTS" ]; then
5993 exit 1
6094 fi
6195
62- # Check for presence of old/new directories, indicating a failed previous autoupgrade
63- echo " ----------------------------------------------------------------------"
64- echo " Checking for left over artifacts from a failed previous autoupgrade..."
65- echo " ----------------------------------------------------------------------"
66- OLD=" ${PGDATA} /old"
67- NEW=" ${PGDATA} /new"
68- if [ -d " ${OLD} " ]; then
69- echo " *****************************************"
70- echo " Left over OLD directory found. Aborting."
71- echo " *****************************************"
72- exit 10
73- fi
74- if [ -d " ${NEW} " ]; then
75- echo " *****************************************"
76- echo " Left over NEW directory found. Aborting."
77- echo " *****************************************"
78- exit 11
79- fi
80- echo " -------------------------------------------------------------------------------"
81- echo " No artifacts found from a failed previous autoupgrade. Continuing the process."
82- echo " -------------------------------------------------------------------------------"
83-
8496 # Don't automatically abort on non-0 exit status, as that messes with these upcoming mv commands
8597 set +e
8698
@@ -205,51 +217,51 @@ if [ -n "$DATABASE_ALREADY_EXISTS" ]; then
205217 fi
206218
207219 # Do timescale upgrade if needed - First look for latest extension version number in extension files
208- echo " ----------------------------------------------------------"
209- echo " Checking latest available TimescaleDB extension version..."
210- echo " ----------------------------------------------------------"
211- TS_VERSION_REGEX=" \-\-([0-9|\.]+)\."
212- TS_SCRIPT_NAME=$( find /usr/share/postgresql/$PG_MAJOR /extension/ -type f -name " timescaledb--*.sql" | sort | tail -n 1)
213- TS_VERSION=" "
214- TS_VERSION_FILE=" ${PGDATA} /OR_TS_VERSION"
215-
216- if [ " $TS_SCRIPT_NAME " == " " ] || ! [[ $TS_SCRIPT_NAME =~ $TS_VERSION_REGEX ]]; then
217- echo " ------------------------------------------------------"
218- echo " Cannot determine current TimescaleDB extension version"
219- echo " ------------------------------------------------------"
220- exit 15
220+ echo " ----------------------------------------------------------"
221+ echo " Checking latest available TimescaleDB extension version..."
222+ echo " ----------------------------------------------------------"
223+ TS_VERSION_REGEX=" \-\-([0-9|\.]+)\."
224+ TS_SCRIPT_NAME=$( find /usr/share/postgresql/$PG_MAJOR /extension/ -type f -name " timescaledb--*.sql" | sort | tail -n 1)
225+ TS_VERSION=" "
226+ TS_VERSION_FILE=" ${PGDATA} /OR_TS_VERSION"
227+
228+ if [ " $TS_SCRIPT_NAME " == " " ] || ! [[ $TS_SCRIPT_NAME =~ $TS_VERSION_REGEX ]]; then
229+ echo " ------------------------------------------------------"
230+ echo " Cannot determine current TimescaleDB extension version"
231+ echo " ------------------------------------------------------"
232+ exit 15
221233 else
222- TS_VERSION=${BASH_REMATCH[1]}
223- fi
234+ TS_VERSION=${BASH_REMATCH[1]}
235+ fi
224236
225- if [ " $TS_VERSION " == " " ]; then
226- echo " ------------------------------------------------------"
227- echo " Cannot determine current TimescaleDB extension version"
228- echo " ------------------------------------------------------"
229- exit 15
230- fi
237+ if [ " $TS_VERSION " == " " ]; then
238+ echo " ------------------------------------------------------"
239+ echo " Cannot determine current TimescaleDB extension version"
240+ echo " ------------------------------------------------------"
241+ exit 15
242+ fi
231243
232244 DO_TS_UPGRADE=false
233245 echo " Checking whether Timescale needs upgrading..."
234246 if [ ! -f " ${TS_VERSION_FILE} " ]; then
235- echo " -----------------------------------------------------"
247+ echo " -----------------------------------------------------"
236248 echo " No OR_TS_VERSION file so assuming upgrade is required"
237- echo " -----------------------------------------------------"
249+ echo " -----------------------------------------------------"
238250 DO_TS_UPGRADE=true
239251 else
240- echo " -------------------------------------------------------"
252+ echo " -------------------------------------------------------"
241253 echo " Getting version number from existing OR_TS_VERSION file"
242- echo " -------------------------------------------------------"
254+ echo " -------------------------------------------------------"
243255 PREVIOUS_TS_VERSION=$( cat " $TS_VERSION_FILE " )
244256 if [ " ${PREVIOUS_TS_VERSION} " != " ${TS_VERSION} " ]; then
245- echo " ------------------------------------------------------------------------------"
257+ echo " ------------------------------------------------------------------------------"
246258 echo " TimescaleDB extension upgrade required ${PREVIOUS_TS_VERSION} -> ${TS_VERSION} "
247- echo " ------------------------------------------------------------------------------"
259+ echo " ------------------------------------------------------------------------------"
248260 DO_TS_UPGRADE=true
249- else
250- echo " ----------------------------------------------------"
251- echo " TimescaleDB extension is up to date at: ${TS_VERSION} "
252- echo " ----------------------------------------------------"
261+ else
262+ echo " ----------------------------------------------------"
263+ echo " TimescaleDB extension is up to date at: ${TS_VERSION} "
264+ echo " ----------------------------------------------------"
253265 fi
254266 fi
255267
@@ -267,58 +279,58 @@ if [ -n "$DATABASE_ALREADY_EXISTS" ]; then
267279 # Do re-indexing check
268280 DO_REINDEX=false
269281 if [ " $OR_DISABLE_REINDEX " == ' true' ] || [ -z " $OR_REINDEX_COUNTER " ]; then
270- echo " ----------------------------"
282+ echo " ----------------------------"
271283 echo " OR_REINDEX check is disabled"
272- echo " ----------------------------"
284+ echo " ----------------------------"
273285 else
274- echo " ---------------------------------------"
286+ echo " ---------------------------------------"
275287 echo " Checking whether REINDEX is required..."
276- echo " ---------------------------------------"
288+ echo " ---------------------------------------"
277289 REINDEX_FILE=" $PGDATA /OR_REINDEX_COUNTER.$OR_REINDEX_COUNTER "
278290 if [ -f " $REINDEX_FILE " ]; then
279- echo " -------------------------------------------------------------------------"
291+ echo " -------------------------------------------------------------------------"
280292 echo " REINDEX file '$REINDEX_FILE ' already exists so no re-indexing required"
281- echo " -------------------------------------------------------------------------"
293+ echo " -------------------------------------------------------------------------"
282294 else
283- echo " -------------------------------------------------------------------------"
295+ echo " -------------------------------------------------------------------------"
284296 echo " REINDEX file '$REINDEX_FILE ' doesn't exist so re-indexing required"
285- echo " -------------------------------------------------------------------------"
297+ echo " -------------------------------------------------------------------------"
286298 DO_REINDEX=true
287299 fi
288300 fi
289301
290302 if [ " $DO_REINDEX " == " true" ] || [ " $DO_TS_UPGRADE " == " true" ]; then
291- echo " -------------------------"
303+ echo " -------------------------"
292304 echo " Starting temporary server"
293- echo " -------------------------"
305+ echo " -------------------------"
294306 docker_temp_server_start " $@ "
295307
296- # Cannot do this on a running DB as the extension is configured to preload
308+ # Cannot do this on a running DB as the extension is configured to preload
297309 if [ " $DO_TS_UPGRADE " == " true" ]; then
298- echo " ------------------------"
310+ echo " ------------------------"
299311 echo " Performing TS upgrade..."
300- echo " ------------------------"
312+ echo " ------------------------"
301313 docker_process_sql -X -c " ALTER EXTENSION timescaledb UPDATE;"
302314 docker_process_sql -c " CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit; ALTER EXTENSION timescaledb_toolkit UPDATE;"
303315
304316 echo " -------------------"
305317 echo " TS upgrade complete"
306- echo " -------------------"
318+ echo " -------------------"
307319 echo " $TS_VERSION " > " ${PGDATA} /OR_TS_VERSION"
308320 fi
309321
310322 if [ " $DO_REINDEX " == " true" ]; then
311- echo " ----------------------------------"
323+ echo " ----------------------------------"
312324 echo " Running timescaledb tune script..."
313- echo " ----------------------------------"
325+ echo " ----------------------------------"
314326 /docker-entrypoint-initdb.d/001_timescaledb_tune.sh
315- echo " ---------------------"
327+ echo " ---------------------"
316328 echo " Re-indexing the DB..."
317- echo " ---------------------"
329+ echo " ---------------------"
318330 docker_process_sql -c " REINDEX database $POSTGRES_DB ;"
319- echo " ------------------"
331+ echo " ------------------"
320332 echo " REINDEX completed!"
321- echo " ------------------"
333+ echo " ------------------"
322334 touch " $REINDEX_FILE "
323335 fi
324336
0 commit comments