don't increment harakiri counter on multiple SIGKILLs sent to the same process

This commit is contained in:
Łukasz Mierzwa
2012-10-25 15:18:00 +02:00
parent a3e0c2260f
commit 4b99bff520
2 changed files with 6 additions and 2 deletions
+5 -2
View File
@@ -499,6 +499,7 @@ int uwsgi_respawn_worker(int wid) {
// ... and memory/harakiri
uwsgi.workers[wid].harakiri = 0;
uwsgi.workers[wid].user_harakiri = 0;
uwsgi.workers[wid].pending_harakiri = 0;
uwsgi.workers[wid].rss_size = 0;
uwsgi.workers[wid].vsz_size = 0;
@@ -1076,7 +1077,7 @@ void uwsgi_register_cheaper_algo(char *name, int (*func) (void)) {
void trigger_harakiri(int i) {
int j;
uwsgi_log("*** HARAKIRI ON WORKER %d (pid: %d) ***\n", i, uwsgi.workers[i].pid);
uwsgi_log("*** HARAKIRI ON WORKER %d (pid: %d, try: %d) ***\n", i, uwsgi.workers[i].pid, uwsgi.workers[i].pending_harakiri+1);
if (uwsgi.harakiri_verbose) {
#ifdef __linux__
int proc_file;
@@ -1128,7 +1129,9 @@ void trigger_harakiri(int i) {
// allow SIGUSR2 to be delivered
sleep(1);
kill(uwsgi.workers[i].pid, SIGKILL);
uwsgi.workers[i].harakiri_count++;
if (!uwsgi.workers[i].pending_harakiri)
uwsgi.workers[i].harakiri_count++;
uwsgi.workers[i].pending_harakiri++;
}
// to avoid races
+1
View File
@@ -2079,6 +2079,7 @@ struct uwsgi_worker {
time_t harakiri;
time_t user_harakiri;
uint64_t harakiri_count;
int pending_harakiri;
uint64_t vsz_size;
uint64_t rss_size;