aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-04-24 16:00:06 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-04-24 16:00:06 -0700
commit916b152184d28e449efa5ab455dcb8c0b90407a6 (patch)
tree407bd583baf39f5d3d5c8730efad02dc04b3f8a5 /src/core
parent872af0281eb14dc69493155e47e89fd42350c9ef (diff)
annotations - revert later
Diffstat (limited to 'src/core')
-rw-r--r--src/core/surface/call.c33
-rw-r--r--src/core/surface/call.h4
-rw-r--r--src/core/surface/completion_queue.c4
-rw-r--r--src/core/surface/server.c2
4 files changed, 23 insertions, 20 deletions
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 7a9fe30732..e80cf9e293 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -300,7 +300,7 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_completion_queue *cq,
initial_op.on_done_recv = call_on_done_recv;
initial_op.recv_user_data = call;
call->receiving = 1;
- grpc_call_internal_ref(call);
+ grpc_call_internal_ref(call, "receiving-0");
initial_op_ptr = &initial_op;
}
grpc_call_stack_init(channel_stack, server_transport_data, initial_op_ptr,
@@ -320,7 +320,9 @@ grpc_completion_queue *grpc_call_get_completion_queue(grpc_call *call) {
return call->cq;
}
-void grpc_call_internal_ref(grpc_call *c) { gpr_ref(&c->internal_refcount); }
+void grpc_call_internal_ref(grpc_call *c, const char *reason) {
+gpr_log(GPR_DEBUG, "grpc_call_internal_ref: %p %s %d -> %d", c, reason, c->internal_refcount.count, c->internal_refcount.count+1);
+ gpr_ref(&c->internal_refcount); }
static void destroy_call(void *call, int ignored_success) {
size_t i;
@@ -353,7 +355,8 @@ static void destroy_call(void *call, int ignored_success) {
gpr_free(c);
}
-void grpc_call_internal_unref(grpc_call *c, int allow_immediate_deletion) {
+void grpc_call_internal_unref(grpc_call *c, const char *reason, int allow_immediate_deletion) {
+gpr_log(GPR_DEBUG, "grpc_call_internal_unref: %p %s %d -> %d", c, reason, c->internal_refcount.count, c->internal_refcount.count-1);
if (gpr_unref(&c->internal_refcount)) {
if (allow_immediate_deletion) {
destroy_call(c, 1);
@@ -412,8 +415,7 @@ static int need_more_data(grpc_call *call) {
is_op_live(call, GRPC_IOREQ_RECV_STATUS) ||
is_op_live(call, GRPC_IOREQ_RECV_STATUS_DETAILS) ||
is_op_live(call, GRPC_IOREQ_RECV_CLOSE) ||
- (call->write_state == WRITE_STATE_INITIAL && !call->is_client &&
- call->read_state != READ_STATE_STREAM_CLOSED);
+ (call->write_state == WRITE_STATE_INITIAL && !call->is_client && call->read_state != READ_STATE_STREAM_CLOSED);
}
static void unlock(grpc_call *call) {
@@ -431,14 +433,14 @@ static void unlock(grpc_call *call) {
op.on_done_recv = call_on_done_recv;
op.recv_user_data = call;
call->receiving = 1;
- grpc_call_internal_ref(call);
+ grpc_call_internal_ref(call, "receiving");
start_op = 1;
}
if (!call->sending) {
if (fill_send_ops(call, &op)) {
call->sending = 1;
- grpc_call_internal_ref(call);
+ grpc_call_internal_ref(call, "sending");
start_op = 1;
}
}
@@ -449,7 +451,7 @@ static void unlock(grpc_call *call) {
sizeof(completed_requests));
call->num_completed_requests = 0;
call->completing = 1;
- grpc_call_internal_ref(call);
+ grpc_call_internal_ref(call, "completing");
}
gpr_mu_unlock(&call->mu);
@@ -466,7 +468,7 @@ static void unlock(grpc_call *call) {
lock(call);
call->completing = 0;
unlock(call);
- grpc_call_internal_unref(call, 0);
+ grpc_call_internal_unref(call, "completing", 0);
}
}
@@ -606,7 +608,7 @@ static void call_on_done_send(void *pc, int success) {
call->last_send_contains = 0;
call->sending = 0;
unlock(call);
- grpc_call_internal_unref(call, 0);
+ grpc_call_internal_unref(call, "sending", 0);
}
static void finish_message(grpc_call *call) {
@@ -687,6 +689,7 @@ static void call_on_done_recv(void *pc, int success) {
grpc_call *call = pc;
size_t i;
int unref_due_to_connection_close = 0;
+ gpr_log(GPR_DEBUG, "%s %p", __FUNCTION__, call);
lock(call);
call->receiving = 0;
if (success) {
@@ -727,9 +730,9 @@ static void call_on_done_recv(void *pc, int success) {
call->recv_ops.nops = 0;
unlock(call);
- grpc_call_internal_unref(call, 0);
+ grpc_call_internal_unref(call, "receiving", 0);
if (unref_due_to_connection_close) {
- grpc_call_internal_unref(call, 0);
+ grpc_call_internal_unref(call, "live", 0);
}
}
@@ -988,7 +991,7 @@ void grpc_call_destroy(grpc_call *c) {
cancel = c->read_state != READ_STATE_STREAM_CLOSED;
unlock(c);
if (cancel) grpc_call_cancel(c);
- grpc_call_internal_unref(c, 1);
+ grpc_call_internal_unref(c, "destroy", 1);
}
grpc_call_error grpc_call_cancel(grpc_call *call) {
@@ -1035,7 +1038,7 @@ static void call_alarm(void *arg, int success) {
grpc_call_cancel(call);
}
}
- grpc_call_internal_unref(call, 1);
+ grpc_call_internal_unref(call, "alarm", 1);
}
static void set_deadline_alarm(grpc_call *call, gpr_timespec deadline) {
@@ -1044,7 +1047,7 @@ static void set_deadline_alarm(grpc_call *call, gpr_timespec deadline) {
assert(0);
return;
}
- grpc_call_internal_ref(call);
+ grpc_call_internal_ref(call, "alarm");
call->have_alarm = 1;
grpc_alarm_init(&call->alarm, deadline, call_alarm, call, gpr_now());
}
diff --git a/src/core/surface/call.h b/src/core/surface/call.h
index 199beb1738..f0c31e3a0d 100644
--- a/src/core/surface/call.h
+++ b/src/core/surface/call.h
@@ -93,8 +93,8 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_completion_queue *cq,
void grpc_call_set_completion_queue(grpc_call *call, grpc_completion_queue *cq);
grpc_completion_queue *grpc_call_get_completion_queue(grpc_call *call);
-void grpc_call_internal_ref(grpc_call *call);
-void grpc_call_internal_unref(grpc_call *call, int allow_immediate_deletion);
+void grpc_call_internal_ref(grpc_call *call, const char *reason);
+void grpc_call_internal_unref(grpc_call *call, const char *reason, int allow_immediate_deletion);
grpc_call_error grpc_call_start_ioreq_and_call_back(
grpc_call *call, const grpc_ioreq *reqs, size_t nreqs,
diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c
index 24f4a05071..4398c43f5e 100644
--- a/src/core/surface/completion_queue.c
+++ b/src/core/surface/completion_queue.c
@@ -135,7 +135,7 @@ static event *add_locked(grpc_completion_queue *cc, grpc_completion_type type,
void grpc_cq_begin_op(grpc_completion_queue *cc, grpc_call *call,
grpc_completion_type type) {
gpr_ref(&cc->refs);
- if (call) grpc_call_internal_ref(call);
+ if (call) grpc_call_internal_ref(call, "cq");
#ifndef NDEBUG
gpr_atm_no_barrier_fetch_add(&cc->pending_op_count[type], 1);
#endif
@@ -409,7 +409,7 @@ void grpc_event_finish(grpc_event *base) {
event *ev = (event *)base;
ev->on_finish(ev->on_finish_user_data, GRPC_OP_OK);
if (ev->base.call) {
- grpc_call_internal_unref(ev->base.call, 1);
+ grpc_call_internal_unref(ev->base.call, "cq", 1);
}
gpr_free(ev);
}
diff --git a/src/core/surface/server.c b/src/core/surface/server.c
index 2f00ad0bc6..254a1a64bd 100644
--- a/src/core/surface/server.c
+++ b/src/core/surface/server.c
@@ -1131,7 +1131,7 @@ static void begin_call(grpc_server *server, call_data *calld,
break;
}
- grpc_call_internal_ref(calld->call);
+ grpc_call_internal_ref(calld->call, "server");
grpc_call_start_ioreq_and_call_back(calld->call, req, r - req, publish,
rc->tag);
}