aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-07-08 08:34:20 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-07-08 08:34:20 -0700
commitab54f793ffbf8f1e805f85d6b0a95c93e619baec (patch)
tree4cb80ae607ef01fa543996416bb3ee057ef94611 /src/core
parentcdc8e947339c8293fa2f56d8b83b4fb5fdfd5fb5 (diff)
Reduce spam
Diffstat (limited to 'src/core')
-rw-r--r--src/core/iomgr/iomgr.c5
-rw-r--r--src/core/surface/server.c36
2 files changed, 33 insertions, 8 deletions
diff --git a/src/core/iomgr/iomgr.c b/src/core/iomgr/iomgr.c
index c507e7c26a..4a2c45a023 100644
--- a/src/core/iomgr/iomgr.c
+++ b/src/core/iomgr/iomgr.c
@@ -111,10 +111,13 @@ void grpc_iomgr_shutdown(void) {
grpc_iomgr_closure *closure;
gpr_timespec shutdown_deadline =
gpr_time_add(gpr_now(), gpr_time_from_seconds(10));
+ gpr_timespec last_warning_time = gpr_now();
gpr_mu_lock(&g_mu);
g_shutdown = 1;
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) {
gpr_log(GPR_DEBUG,
"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",
count_objects());
}
+ last_warning_time = gpr_now();
+ }
if (g_cbs_head) {
do {
closure = g_cbs_head;
diff --git a/src/core/surface/server.c b/src/core/surface/server.c
index 341ca2942c..4053b22063 100644
--- a/src/core/surface/server.c
+++ b/src/core/surface/server.c
@@ -166,6 +166,9 @@ struct grpc_server {
listener *listeners;
int listeners_destroyed;
gpr_refcount internal_refcount;
+
+ /** when did we print the last shutdown progress message */
+ gpr_timespec last_shutdown_message_time;
};
typedef enum {
@@ -476,20 +479,35 @@ static int num_listeners(grpc_server *server) {
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) {
size_t i;
if (!server->shutdown || server->shutdown_published) {
return;
}
- if (server->root_channel_data.next != &server->root_channel_data) {
- gpr_log(GPR_DEBUG,
- "Waiting for all channels to close before destroying server");
- return;
- }
- if (server->listeners_destroyed < num_listeners(server)) {
- gpr_log(GPR_DEBUG, "Waiting for all listeners to be destroyed (@ %d/%d)",
- server->listeners_destroyed, num_listeners(server));
+ if (server->root_channel_data.next != &server->root_channel_data ||
+ server->listeners_destroyed < num_listeners(server)) {
+ if (gpr_time_cmp(
+ gpr_time_sub(gpr_now(), server->last_shutdown_message_time),
+ gpr_time_from_seconds(1)) >= 0) {
+ server->last_shutdown_message_time = gpr_now();
+ gpr_log(GPR_DEBUG,
+ "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;
}
server->shutdown_published = 1;
@@ -930,6 +948,8 @@ void grpc_server_shutdown_and_notify(grpc_server *server,
return;
}
+ server->last_shutdown_message_time = gpr_now();
+
channel_broadcaster_init(server, &broadcaster);
/* collect all unregistered then registered calls */