Reduce spam

pull/2328/head
Craig Tiller 10 years ago
parent cdc8e94733
commit ab54f793ff
  1. 5
      src/core/iomgr/iomgr.c
  2. 36
      src/core/surface/server.c
  3. 16
      test/core/util/grpc_profiler.c

@ -111,10 +111,13 @@ void grpc_iomgr_shutdown(void) {
grpc_iomgr_closure *closure; grpc_iomgr_closure *closure;
gpr_timespec shutdown_deadline = gpr_timespec shutdown_deadline =
gpr_time_add(gpr_now(), gpr_time_from_seconds(10)); gpr_time_add(gpr_now(), gpr_time_from_seconds(10));
gpr_timespec last_warning_time = gpr_now();
gpr_mu_lock(&g_mu); gpr_mu_lock(&g_mu);
g_shutdown = 1; g_shutdown = 1;
while (g_cbs_head != NULL || g_root_object.next != &g_root_object) { while (g_cbs_head != NULL || g_root_object.next != &g_root_object) {
if (gpr_time_cmp(gpr_time_sub(gpr_now(), last_warning_time),
gpr_time_from_seconds(1)) >= 0) {
if (g_cbs_head != NULL && g_root_object.next != &g_root_object) { if (g_cbs_head != NULL && g_root_object.next != &g_root_object) {
gpr_log(GPR_DEBUG, gpr_log(GPR_DEBUG,
"Waiting for %d iomgr objects to be destroyed and executing " "Waiting for %d iomgr objects to be destroyed and executing "
@ -126,6 +129,8 @@ void grpc_iomgr_shutdown(void) {
gpr_log(GPR_DEBUG, "Waiting for %d iomgr objects to be destroyed", gpr_log(GPR_DEBUG, "Waiting for %d iomgr objects to be destroyed",
count_objects()); count_objects());
} }
last_warning_time = gpr_now();
}
if (g_cbs_head) { if (g_cbs_head) {
do { do {
closure = g_cbs_head; closure = g_cbs_head;

@ -166,6 +166,9 @@ struct grpc_server {
listener *listeners; listener *listeners;
int listeners_destroyed; int listeners_destroyed;
gpr_refcount internal_refcount; gpr_refcount internal_refcount;
/** when did we print the last shutdown progress message */
gpr_timespec last_shutdown_message_time;
}; };
typedef enum { typedef enum {
@ -476,20 +479,35 @@ static int num_listeners(grpc_server *server) {
return n; return n;
} }
static int num_channels(grpc_server *server) {
channel_data *chand;
int n = 0;
for (chand = server->root_channel_data.next;
chand != &server->root_channel_data; chand = chand->next) {
n++;
}
return n;
}
static void maybe_finish_shutdown(grpc_server *server) { static void maybe_finish_shutdown(grpc_server *server) {
size_t i; size_t i;
if (!server->shutdown || server->shutdown_published) { if (!server->shutdown || server->shutdown_published) {
return; return;
} }
if (server->root_channel_data.next != &server->root_channel_data) { if (server->root_channel_data.next != &server->root_channel_data ||
gpr_log(GPR_DEBUG, server->listeners_destroyed < num_listeners(server)) {
"Waiting for all channels to close before destroying server"); if (gpr_time_cmp(
return; gpr_time_sub(gpr_now(), server->last_shutdown_message_time),
} gpr_time_from_seconds(1)) >= 0) {
if (server->listeners_destroyed < num_listeners(server)) { server->last_shutdown_message_time = gpr_now();
gpr_log(GPR_DEBUG, "Waiting for all listeners to be destroyed (@ %d/%d)", gpr_log(GPR_DEBUG,
server->listeners_destroyed, num_listeners(server)); "Waiting for %d channels and %d/%d listeners to be destroyed"
" before shutting down server",
num_channels(server),
num_listeners(server) - server->listeners_destroyed,
num_listeners(server));
}
return; return;
} }
server->shutdown_published = 1; server->shutdown_published = 1;
@ -930,6 +948,8 @@ void grpc_server_shutdown_and_notify(grpc_server *server,
return; return;
} }
server->last_shutdown_message_time = gpr_now();
channel_broadcaster_init(server, &broadcaster); channel_broadcaster_init(server, &broadcaster);
/* collect all unregistered then registered calls */ /* collect all unregistered then registered calls */

@ -43,11 +43,17 @@ void grpc_profiler_stop() { ProfilerStop(); }
#include <grpc/support/log.h> #include <grpc/support/log.h>
void grpc_profiler_start(const char *filename) { void grpc_profiler_start(const char *filename) {
gpr_log(GPR_DEBUG, static int printed_warning = 0;
"You do not have google-perftools installed, profiling is disabled [for %s]", filename); if (!printed_warning) {
gpr_log(GPR_DEBUG, gpr_log(GPR_DEBUG,
"To install on ubuntu: sudo apt-get install google-perftools " "You do not have google-perftools installed, profiling is disabled "
"libgoogle-perftools-dev"); "[for %s]",
filename);
gpr_log(GPR_DEBUG,
"To install on ubuntu: sudo apt-get install google-perftools "
"libgoogle-perftools-dev");
printed_warning = 1;
}
} }
void grpc_profiler_stop(void) {} void grpc_profiler_stop(void) {}

Loading…
Cancel
Save