From 0af22dad183bfda0149c0774aeec29f39bfca285 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Tue, 1 Oct 2019 14:42:35 -0700 Subject: [PATCH] flush-memcached: Respect MEMCACHED_LOCATION; handle errors. Fixes #13238. Signed-off-by: Anders Kaseorg --- scripts/setup/flush-memcached | 29 ++++++++++++++++++++++++----- tools/do-destroy-rebuild-database | 2 +- tools/setup/generate-fixtures | 4 ++-- tools/setup/postgres-init-dev-db | 2 +- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/scripts/setup/flush-memcached b/scripts/setup/flush-memcached index ddd6ad3faf..a5b5676845 100755 --- a/scripts/setup/flush-memcached +++ b/scripts/setup/flush-memcached @@ -1,6 +1,25 @@ -#!/usr/bin/env bash -set -e +#!/usr/bin/env python3 -# Flush memcached -echo "Flushing memcached..." -echo 'flush_all' | nc -w 1 localhost 11211 +import os +import socket +import sys +from urllib.parse import urlsplit + +BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../..") +sys.path.append(BASE_DIR) + +import scripts.lib.setup_path_on_import +from zproject import settings + +url = urlsplit("//" + settings.MEMCACHED_LOCATION) + +print("Flushing memcached...") +with socket.create_connection((url.hostname, url.port)) as f: + f.sendall(b"flush_all\r\n") + response = b"" + while b"\n" not in response: + response += f.recv(4096) + if response != b"OK\r\n": + print(response, file=sys.stderr) + print("Failed to flush memcached", file=sys.stderr) + sys.exit(1) diff --git a/tools/do-destroy-rebuild-database b/tools/do-destroy-rebuild-database index 1485c3a1d0..cedca211e3 100755 --- a/tools/do-destroy-rebuild-database +++ b/tools/do-destroy-rebuild-database @@ -9,7 +9,7 @@ DROP DATABASE IF EXISTS zulip; CREATE DATABASE zulip TEMPLATE zulip_base; EOF -sh "$(dirname "$0")/../scripts/setup/flush-memcached" +"$(dirname "$0")/../scripts/setup/flush-memcached" ./manage.py purge_queue --all ./manage.py migrate --noinput diff --git a/tools/setup/generate-fixtures b/tools/setup/generate-fixtures index fd9d5c5641..37c11ef8ba 100755 --- a/tools/setup/generate-fixtures +++ b/tools/setup/generate-fixtures @@ -17,7 +17,7 @@ if [ "$1" != "--force" ]; then DROP DATABASE IF EXISTS zulip_test; CREATE DATABASE zulip_test TEMPLATE zulip_test_template; EOF - sh "$(dirname "$0")/../../scripts/setup/flush-memcached" + "$(dirname "$0")/../../scripts/setup/flush-memcached" exit 0 fi @@ -29,7 +29,7 @@ psql -v ON_ERROR_STOP=1 -h localhost postgres zulip_test <