##// END OF EJS Templates
chg: do not write pidfile...
Jun Wu -
r28455:412ee35a default
parent child Browse files
Show More
@@ -33,7 +33,6 b' struct cmdserveropts {'
33 33 char sockname[UNIX_PATH_MAX];
34 34 char redirectsockname[UNIX_PATH_MAX];
35 35 char lockfile[UNIX_PATH_MAX];
36 char pidfile[UNIX_PATH_MAX];
37 36 size_t argsize;
38 37 const char **args;
39 38 int lockfd;
@@ -149,16 +148,12 b' static void setcmdserveropts(struct cmds'
149 148 const char *basename = (envsockname) ? envsockname : sockdir;
150 149 const char *sockfmt = (envsockname) ? "%s" : "%s/server";
151 150 const char *lockfmt = (envsockname) ? "%s.lock" : "%s/lock";
152 const char *pidfmt = (envsockname) ? "%s.pid" : "%s/pid";
153 151 r = snprintf(opts->sockname, sizeof(opts->sockname), sockfmt, basename);
154 152 if (r < 0 || (size_t)r >= sizeof(opts->sockname))
155 153 abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r);
156 154 r = snprintf(opts->lockfile, sizeof(opts->lockfile), lockfmt, basename);
157 155 if (r < 0 || (size_t)r >= sizeof(opts->lockfile))
158 156 abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r);
159 r = snprintf(opts->pidfile, sizeof(opts->pidfile), pidfmt, basename);
160 if (r < 0 || (size_t)r >= sizeof(opts->pidfile))
161 abortmsg("too long TMPDIR or CHGSOCKNAME (r = %d)", r);
162 157 }
163 158
164 159 /*
@@ -214,7 +209,6 b' static void execcmdserver(const struct c'
214 209 "--cmdserver", "chgunix",
215 210 "--address", opts->sockname,
216 211 "--daemon-postexec", "chdir:/",
217 "--pid-file", opts->pidfile,
218 212 "--config", "extensions.chgserver=",
219 213 };
220 214 size_t baseargvsize = sizeof(baseargv) / sizeof(baseargv[0]);
@@ -314,21 +308,13 b' static hgclient_t *connectcmdserver(stru'
314 308 return hgc;
315 309 }
316 310
317 static void killcmdserver(const struct cmdserveropts *opts, int sig)
311 static void killcmdserver(const struct cmdserveropts *opts)
318 312 {
319 FILE *fp = fopen(opts->pidfile, "r");
320 if (!fp)
321 abortmsg("cannot open %s (errno = %d)", opts->pidfile, errno);
322 int pid = 0;
323 int n = fscanf(fp, "%d", &pid);
324 fclose(fp);
325 if (n != 1 || pid <= 0)
326 abortmsg("cannot read pid from %s", opts->pidfile);
327
328 if (kill((pid_t)pid, sig) < 0) {
329 if (errno == ESRCH)
330 return;
331 abortmsg("cannot kill %d (errno = %d)", pid, errno);
313 /* resolve config hash */
314 char *resolvedpath = realpath(opts->sockname, NULL);
315 if (resolvedpath) {
316 unlink(resolvedpath);
317 free(resolvedpath);
332 318 }
333 319 }
334 320
@@ -536,11 +522,8 b' int main(int argc, const char *argv[], c'
536 522 setcmdserverargs(&opts, argc, argv);
537 523
538 524 if (argc == 2) {
539 int sig = 0;
540 if (strcmp(argv[1], "--kill-chg-daemon") == 0)
541 sig = SIGTERM;
542 if (sig > 0) {
543 killcmdserver(&opts, sig);
525 if (strcmp(argv[1], "--kill-chg-daemon") == 0) {
526 killcmdserver(&opts);
544 527 return 0;
545 528 }
546 529 }
@@ -2384,9 +2384,9 b' class TestRunner(object):'
2384 2384 def _killchgdaemons(self):
2385 2385 """Kill all background chg command servers spawned by tests"""
2386 2386 for f in os.listdir(self._chgsockdir):
2387 if not f.endswith(b'.pid'):
2387 if '.' in f:
2388 2388 continue
2389 killdaemons(os.path.join(self._chgsockdir, f))
2389 os.unlink(os.path.join(self._chgsockdir, f))
2390 2390
2391 2391 def _outputcoverage(self):
2392 2392 """Produce code coverage output."""
General Comments 0
You need to be logged in to leave comments. Login now