Fix a conditional that got flipped

reviewable/pr8239/r2
Craig Tiller 8 years ago
parent dd339ea915
commit 32c804e6a7
  1. 16
      src/core/lib/iomgr/buffer_pool.c
  2. 2
      src/core/lib/iomgr/buffer_pool.h
  3. 19
      test/core/iomgr/buffer_pool_test.c

@ -337,11 +337,6 @@ static void bu_destroy(grpc_exec_ctx *exec_ctx, void *bu, grpc_error *error) {
buffer_user->buffer_pool->free_pool += buffer_user->free_pool;
bpstep_sched(exec_ctx, buffer_user->buffer_pool);
}
#ifndef NDEBUG
gpr_free(buffer_user->asan_canary);
#endif
grpc_buffer_pool_internal_unref(exec_ctx, buffer_user->buffer_pool);
gpr_mu_destroy(&buffer_user->mu);
}
static void bu_allocated_slices(grpc_exec_ctx *exec_ctx, void *ts,
@ -521,6 +516,15 @@ void grpc_buffer_user_shutdown(grpc_exec_ctx *exec_ctx,
gpr_mu_unlock(&buffer_user->mu);
}
void grpc_buffer_user_destroy(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user) {
#ifndef NDEBUG
gpr_free(buffer_user->asan_canary);
#endif
grpc_buffer_pool_internal_unref(exec_ctx, buffer_user->buffer_pool);
gpr_mu_destroy(&buffer_user->mu);
}
void grpc_buffer_user_alloc(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user, size_t size,
grpc_closure *optional_on_done) {
@ -580,7 +584,7 @@ void grpc_buffer_user_free(grpc_exec_ctx *exec_ctx,
void grpc_buffer_user_post_reclaimer(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user,
bool destructive, grpc_closure *closure) {
if (gpr_atm_acq_load(&buffer_user->on_done_destroy_closure) != 0) {
if (gpr_atm_acq_load(&buffer_user->on_done_destroy_closure) == 0) {
GPR_ASSERT(buffer_user->reclaimers[destructive] == NULL);
buffer_user->reclaimers[destructive] = closure;
grpc_combiner_execute(exec_ctx, buffer_user->buffer_pool->combiner,

@ -90,6 +90,8 @@ void grpc_buffer_user_init(grpc_buffer_user *buffer_user,
void grpc_buffer_user_shutdown(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user,
grpc_closure *on_done);
void grpc_buffer_user_destroy(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user);
void grpc_buffer_user_alloc(grpc_exec_ctx *exec_ctx,
grpc_buffer_user *buffer_user, size_t size,

@ -83,8 +83,10 @@ static void destroy_user(grpc_buffer_user *usr) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
bool done = false;
grpc_buffer_user_shutdown(&exec_ctx, usr, set_bool(&done));
grpc_exec_ctx_finish(&exec_ctx);
grpc_exec_ctx_flush(&exec_ctx);
GPR_ASSERT(done);
grpc_buffer_user_destroy(&exec_ctx, usr);
grpc_exec_ctx_finish(&exec_ctx);
}
static void test_no_op(void) {
@ -528,6 +530,11 @@ static void test_buffer_user_stays_allocated_until_memory_released(void) {
grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(done);
}
{
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_buffer_user_destroy(&exec_ctx, &usr);
grpc_exec_ctx_finish(&exec_ctx);
}
}
static void test_pools_merged_on_buffer_user_deletion(void) {
@ -569,6 +576,11 @@ static void test_pools_merged_on_buffer_user_deletion(void) {
GPR_ASSERT(done);
GPR_ASSERT(reclaimer_cancelled);
}
{
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_buffer_user_destroy(&exec_ctx, &usr);
grpc_exec_ctx_finish(&exec_ctx);
}
}
grpc_buffer_pool_unref(p);
}
@ -678,6 +690,11 @@ static void test_one_slice_deleted_late(void) {
grpc_buffer_pool_unref(p);
gpr_slice_buffer_destroy(&buffer);
GPR_ASSERT(done);
{
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_buffer_user_destroy(&exec_ctx, &usr);
grpc_exec_ctx_finish(&exec_ctx);
}
}
int main(int argc, char **argv) {

Loading…
Cancel
Save