Skip to content

Commit 709d7c9

Browse files
committed
Robustness update
1 parent 8d54670 commit 709d7c9

1 file changed

Lines changed: 97 additions & 85 deletions

File tree

or-entrypoint.sh

Lines changed: 97 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,62 @@
77
source /docker-entrypoint.sh
88
docker_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+
1036
if [ -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

Comments
 (0)