From 7140f0342b6d8aadd6e2b0ff7fd74f22a23a5e68 Mon Sep 17 00:00:00 2001 From: Kazunori Kimura Date: Fri, 2 Jun 2023 22:12:29 +0900 Subject: [PATCH] Fix unused client removal on restarted container Handle the case where the target does not exist in the process of deleting unused clients. Such a situation will not occur in newly launched containers, but will occur if they are restarted. During container restarts, container status are preserved. If the unused database client was deleted in the last run, grep will not match anything. It returns non-zero code and the container stops there because entrypoint sets option `-e` (exit immediately on non-zero exit code excluding some special cases) This commit make the uninstall process to handle the case UNUSED_DB_CLIENTS is empty. --- assets/runtime/functions | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/assets/runtime/functions b/assets/runtime/functions index e445c913e..496a28e0c 100644 --- a/assets/runtime/functions +++ b/assets/runtime/functions @@ -237,7 +237,16 @@ gitlab_uninstall_unused_database_client() { REGEX_DB_CLIENT_VERSIONS_IN_USE="-common${DB_CLIENT_VERSIONS_IN_USE}" # remove unused client using regex above - UNUSED_DB_CLIENTS=$(apt-cache pkgnames postgresql-client | grep -v -e "${REGEX_DB_CLIENT_VERSIONS_IN_USE}" | tr '\n' ' ') + # grep may return non-zero code on mo match, so fake the exit code with the `|| true` to swallow that + UNUSED_DB_CLIENTS=$(apt-cache pkgnames postgresql-client | grep -v -e "${REGEX_DB_CLIENT_VERSIONS_IN_USE}" || true) + if [[ "${UNUSED_DB_CLIENTS}" == "" ]]; then + echo "- All installed version of clients are in use. Did not uninstalled any client..." + return + fi + + # just to get clean log, convert newline (package name delimiter) to single whitespace + UNUSED_DB_CLIENTS=$(echo ${UNUSED_DB_CLIENTS} | tr '\n' ' ') + echo "- Uninstalling unused client(s): ${UNUSED_DB_CLIENTS}" DEBIAN_FRONTEND=noninteractive apt-get -qq -y purge -- ${UNUSED_DB_CLIENTS} >/dev/null fi