chg: make timeout adjustable
authorJun Wu <quark@fb.com>
Mon, 13 Jun 2016 21:30:14 +0100
changeset 29345 62b890496de5
parent 29344 bb3d5c20eaf6
child 29346 38e0c83c7ee4
chg: make timeout adjustable Before this patch, chg will give up when it cannot connect to the new server within 10 seconds. If the host has high load during that time, 10 seconds is not enough. This patch makes it adjustable using the CHGTIMEOUT environment variable.
contrib/chg/README
contrib/chg/chg.c
--- a/contrib/chg/README	Sat Jun 11 20:25:49 2016 +0100
+++ b/contrib/chg/README	Mon Jun 13 21:30:14 2016 +0100
@@ -28,3 +28,5 @@
 
  * CHGDEBUG enables debug messages.
  * CHGSOCKNAME specifies the socket path of the background cmdserver.
+ * CHGTIMEOUT specifies how many seconds chg will wait before giving up
+   connecting to a cmdserver. If it is 0, chg will wait forever. Default: 10
--- a/contrib/chg/chg.c	Sat Jun 11 20:25:49 2016 +0100
+++ b/contrib/chg/chg.c	Mon Jun 13 21:30:14 2016 +0100
@@ -249,7 +249,13 @@
 	int pst = 0;
 
 	debugmsg("try connect to %s repeatedly", opts->sockname);
-	for (unsigned int i = 0; i < 10 * 100; i++) {
+
+	unsigned int timeoutsec = 10;  /* default: 10 seconds */
+	const char *timeoutenv = getenv("CHGTIMEOUT");
+	if (timeoutenv)
+		sscanf(timeoutenv, "%u", &timeoutsec);
+
+	for (unsigned int i = 0; !timeoutsec || i < timeoutsec * 100; i++) {
 		hgclient_t *hgc = hgc_open(opts->sockname);
 		if (hgc)
 			return hgc;