All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Turner <dturner@twopensource.com>
To: git@vger.kernel.org, pclouds@gmail.com
Cc: David Turner <dturner@twopensource.com>
Subject: [PATCH v12 15/20] index-helper: kill mode
Date: Thu, 19 May 2016 17:45:52 -0400	[thread overview]
Message-ID: <1463694357-6503-16-git-send-email-dturner@twopensource.com> (raw)
In-Reply-To: <1463694357-6503-1-git-send-email-dturner@twopensource.com>

Add a new command (and command-line arg) to allow index-helpers to
exit cleanly.

This is mainly useful for tests.

Signed-off-by: David Turner <dturner@twopensource.com>
---
 Documentation/git-index-helper.txt |  3 +++
 index-helper.c                     | 31 ++++++++++++++++++++++++++++++-
 t/t7900-index-helper.sh            |  9 +++++++++
 3 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-index-helper.txt b/Documentation/git-index-helper.txt
index 55a8a5a..addf694 100644
--- a/Documentation/git-index-helper.txt
+++ b/Documentation/git-index-helper.txt
@@ -40,6 +40,9 @@ OPTIONS
 --detach::
 	Detach from the shell.
 
+--kill::
+	Kill any running index-helper and clean up the socket
+
 NOTES
 -----
 
diff --git a/index-helper.c b/index-helper.c
index d3a1f39..4a171e6 100644
--- a/index-helper.c
+++ b/index-helper.c
@@ -353,6 +353,8 @@ static void loop(int fd, int idle_in_seconds)
 					 * alive, nothing to do.
 					 */
 				}
+			} else if (!strcmp(buf, "die")) {
+				break;
 			} else {
 				warning("BUG: Bogus command %s", buf);
 			}
@@ -383,10 +385,29 @@ static const char * const usage_text[] = {
 	NULL
 };
 
+static void request_kill(void)
+{
+	int fd = unix_stream_connect(git_path("index-helper.sock"));
+
+	if (fd >= 0) {
+		write_in_full(fd, "die", 4);
+		close(fd);
+	}
+
+	/*
+	 * The child will try to do this anyway, but we want to be
+	 * ready to launch a new daemon immediately after this command
+	 * returns.
+	 */
+
+	unlink(git_path("index-helper.sock"));
+	return;
+}
+
 int main(int argc, char **argv)
 {
 	const char *prefix;
-	int idle_in_seconds = 600, detach = 0;
+	int idle_in_seconds = 600, detach = 0, kill = 0;
 	int fd;
 	struct strbuf socket_path = STRBUF_INIT;
 	struct option options[] = {
@@ -395,6 +416,7 @@ int main(int argc, char **argv)
 		OPT_BOOL(0, "strict", &to_verify,
 			 "verify shared memory after creating"),
 		OPT_BOOL(0, "detach", &detach, "detach the process"),
+		OPT_BOOL(0, "kill", &kill, "request that existing index helper processes exit"),
 		OPT_END()
 	};
 
@@ -409,6 +431,13 @@ int main(int argc, char **argv)
 			  options, usage_text, 0))
 		die(_("too many arguments"));
 
+	if (kill) {
+		if (detach)
+			die(_("--kill doesn't want any other options"));
+		request_kill();
+		return 0;
+	}
+
 	atexit(cleanup);
 	sigchain_push_common(cleanup_on_signal);
 
diff --git a/t/t7900-index-helper.sh b/t/t7900-index-helper.sh
index 114c112..e71b5af 100755
--- a/t/t7900-index-helper.sh
+++ b/t/t7900-index-helper.sh
@@ -20,4 +20,13 @@ test_expect_success 'index-helper smoke test' '
 	test_path_is_missing .git/index-helper.sock
 '
 
+test_expect_success 'index-helper creates usable path file and can be killed' '
+	test_when_finished "git index-helper --kill" &&
+	test_path_is_missing .git/index-helper.sock &&
+	git index-helper --detach &&
+	test -S .git/index-helper.sock &&
+	git index-helper --kill &&
+	test_path_is_missing .git/index-helper.sock
+'
+
 test_done
-- 
2.4.2.767.g62658d5-twtrsrc

  parent reply	other threads:[~2016-05-19 21:47 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-19 21:45 [PATCH v12 00/20] index-helper/watchman David Turner
2016-05-19 21:45 ` [PATCH v12 01/20] read-cache.c: fix constness of verify_hdr() David Turner
2016-05-19 21:45 ` [PATCH v12 02/20] read-cache: allow to keep mmap'd memory after reading David Turner
2016-05-19 21:45 ` [PATCH v12 03/20] pkt-line: add gentle version of packet_write David Turner
2016-06-25 14:01   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 04/20] index-helper: new daemon for caching index and related stuff David Turner
2016-06-17 16:43   ` Christian Couder
2016-06-25 14:15     ` Duy Nguyen
2016-06-25 14:33   ` Duy Nguyen
2016-06-25 19:21     ` David Turner
2016-06-26  4:27       ` Duy Nguyen
2016-06-26 19:29         ` David Turner
2016-06-27  5:50           ` Duy Nguyen
2016-06-26  8:53       ` Eric Wong
2016-06-26 17:49         ` David Turner
2016-06-26 23:25           ` Eric Wong
2016-05-19 21:45 ` [PATCH v12 05/20] index-helper: add --strict David Turner
2016-06-25 14:43   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 06/20] daemonize(): set a flag before exiting the main process David Turner
2016-05-19 21:45 ` [PATCH v12 07/20] index-helper: add --detach David Turner
2016-06-25 14:46   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 08/20] index-helper: log warnings David Turner
2016-05-19 21:45 ` [PATCH v12 09/20] read-cache: add watchman 'WAMA' extension David Turner
2016-06-25 14:59   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 10/20] watchman: support watchman to reduce index refresh cost David Turner
2016-06-17 16:01   ` Christian Couder
2016-05-19 21:45 ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-06-17 13:02   ` Duy Nguyen
2016-06-17 21:39     ` David Turner
2016-06-19  5:07     ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing, " David Turner
2016-06-23  6:24       ` David Turner
2016-06-23 15:33         ` Duy Nguyen
2016-06-25 16:27   ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing " Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 12/20] update-index: enable/disable watchman support David Turner
2016-06-25 16:31   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 13/20] unpack-trees: preserve index extensions David Turner
2016-05-19 21:45 ` [PATCH v12 14/20] watchman: add a config option to enable the extension David Turner
2016-05-19 21:45 ` David Turner [this message]
2016-05-19 21:45 ` [PATCH v12 16/20] index-helper: don't run if already running David Turner
2016-06-17 16:18   ` Christian Couder
2016-05-19 21:45 ` [PATCH v12 17/20] index-helper: autorun mode David Turner
2016-06-25 16:35   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 18/20] index-helper: optionally automatically run David Turner
2016-06-25 16:38   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 19/20] trace: measure where the time is spent in the index-heavy operations David Turner
2016-05-19 21:45 ` [PATCH v12 20/20] index-helper: indexhelper.exitafter config David Turner
2016-06-25 13:28 ` [PATCH v12 00/20] index-helper/watchman Duy Nguyen
2016-06-25 16:42   ` Duy Nguyen
2016-06-26  4:08   ` David Turner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1463694357-6503-16-git-send-email-dturner@twopensource.com \
    --to=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.