Lua debugger: call wait3() if there are pending forked debugging sessions.

This commit is contained in:
antirez 2015-11-14 22:13:32 +01:00
parent 01636435fa
commit 333547dab6
3 changed files with 10 additions and 1 deletions

View File

@ -1650,6 +1650,12 @@ int ldbRemoveChild(pid_t pid) {
return 0; return 0;
} }
/* Return the number of children we still did not received termination
* acknowledge via wait() in the parent process. */
int ldbPendingChildren(void) {
return listLength(ldb.children);
}
/* Kill all the forked sessions. */ /* Kill all the forked sessions. */
void ldbKillForkedSessions(void) { void ldbKillForkedSessions(void) {
listIter li; listIter li;

View File

@ -1186,7 +1186,9 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
} }
/* Check if a background saving or AOF rewrite in progress terminated. */ /* Check if a background saving or AOF rewrite in progress terminated. */
if (server.rdb_child_pid != -1 || server.aof_child_pid != -1) { if (server.rdb_child_pid != -1 || server.aof_child_pid != -1 ||
ldbPendingChildren())
{
int statloc; int statloc;
pid_t pid; pid_t pid;

View File

@ -1473,6 +1473,7 @@ int redis_check_rdb_main(char **argv, int argc);
void scriptingInit(int setup); void scriptingInit(int setup);
int ldbRemoveChild(pid_t pid); int ldbRemoveChild(pid_t pid);
void ldbKillForkedSessions(void); void ldbKillForkedSessions(void);
int ldbPendingChildren(void);
/* Blocked clients */ /* Blocked clients */
void processUnblockedClients(void); void processUnblockedClients(void);