erl_interface and ALIVE
Vance Shipley
vances@REDACTED
Fri Sep 1 21:23:57 CEST 2000
Uff,
Yes, but check out the times! My buffers are filling up
with these messages as they are produced many times a second.
This seems to be produced by run_erl. In run_erl.c:
/* Enter the work loop */
timeout.tv_sec = LOG_ALIVE_MINUTES*60;
timeout.tv_usec = 0;
while (1) {
maxfd = MAX(rfd, mfd);
FD_ZERO(&readfds);
FD_SET(rfd, &readfds);
FD_SET(mfd, &readfds);
time(&last_activity);
ready = select(maxfd + 1, &readfds, NULL, NULL, &timeout);
if (ready < 0) {
/* Some error occured */
error("Error in select.");
exit(1);
} else {
/* Check how long time we've been inactive */
time_t now;
time(&now);
if(!ready || now - last_activity > LOG_ACTIVITY_MINUTES*60) {
/* Either a time out: 15 minutes without action, */
/* or something is coming in right now, but it's a long time */
/* since last time, so let's write a time stamp this message */
sprintf(buf, "\n===== %s%s", ready?"":"ALIVE ", ctime(&now));
write_to_log(&lfd, &lognum, buf, strlen(buf));
}
}
I believe that what is happening is that select is returning 0 at
these times. It gets into a state where it gets stuck doing this.
It hasn't timed out though as it's been far, far less than a minute.
I think I'll test and report errno and see what it says...
-Vance
} >Another problem which I do not yet understand is that
} >sometimes the Erlang node will produce the following
} >messages in the logs:
} >
} >===== ALIVE Fri Sep 1 11:32:49 2000
} >
} >===== ALIVE Fri Sep 1 11:32:49 2000
} >
} >===== ALIVE Fri Sep 1 11:32:49 2000
}
}
} These entries are written to mark that the node is up and running,
} even though it is not outputting anything to the shell.
}
} /Uffe
More information about the erlang-questions
mailing list