Fix broken shutdown, and cascading exec_ctx usage bugs

pull/9660/head
Craig Tiller 8 years ago
parent 225435972c
commit 9e5ac1bf11
  1. 2
      src/core/ext/client_channel/client_channel.c
  2. 2
      src/core/ext/client_channel/lb_policy.c
  3. 2
      src/core/ext/client_channel/subchannel.c
  4. 2
      src/core/ext/resolver/dns/native/dns_resolver.c
  5. 5
      src/core/lib/http/httpcli.c
  6. 3
      src/core/lib/http/httpcli.h
  7. 7
      src/core/lib/iomgr/ev_epoll_linux.c
  8. 33
      src/core/lib/iomgr/ev_poll_posix.c
  9. 5
      src/core/lib/iomgr/ev_posix.c
  10. 3
      src/core/lib/iomgr/ev_posix.h
  11. 3
      src/core/lib/iomgr/pollset_set.h
  12. 3
      src/core/lib/iomgr/pollset_set_uv.c
  13. 3
      src/core/lib/iomgr/pollset_set_windows.c
  14. 2
      src/core/lib/security/credentials/google_default/google_default_credentials.c
  15. 4
      src/core/lib/security/credentials/jwt/jwt_verifier.c
  16. 3
      src/core/lib/security/credentials/jwt/jwt_verifier.h
  17. 2
      src/core/lib/security/credentials/oauth2/oauth2_credentials.c
  18. 2
      test/core/end2end/fixtures/http_proxy.c
  19. 2
      test/core/http/httpcli_test.c
  20. 2
      test/core/http/httpscli_test.c
  21. 11
      test/core/iomgr/pollset_set_test.c
  22. 2
      test/core/iomgr/resolve_address_posix_test.c
  23. 2
      test/core/iomgr/resolve_address_test.c
  24. 2
      test/core/iomgr/tcp_client_posix_test.c
  25. 16
      test/core/security/jwt_verifier_test.c
  26. 5
      test/core/security/verify_jwt.c
  27. 4
      test/core/util/port_server_client.c

@ -582,7 +582,7 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table); grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table);
} }
grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker); grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker);
grpc_pollset_set_destroy(chand->interested_parties); grpc_pollset_set_destroy(exec_ctx, chand->interested_parties);
GRPC_COMBINER_UNREF(exec_ctx, chand->combiner, "client_channel"); GRPC_COMBINER_UNREF(exec_ctx, chand->combiner, "client_channel");
gpr_mu_destroy(&chand->info_mu); gpr_mu_destroy(&chand->info_mu);
} }

@ -94,7 +94,7 @@ void grpc_lb_policy_weak_unref(grpc_exec_ctx *exec_ctx,
gpr_atm old_val = gpr_atm old_val =
ref_mutate(policy, -(gpr_atm)1, 1 REF_MUTATE_PASS_ARGS("WEAK_UNREF")); ref_mutate(policy, -(gpr_atm)1, 1 REF_MUTATE_PASS_ARGS("WEAK_UNREF"));
if (old_val == 1) { if (old_val == 1) {
grpc_pollset_set_destroy(policy->interested_parties); grpc_pollset_set_destroy(exec_ctx, policy->interested_parties);
policy->vtable->destroy(exec_ctx, policy); policy->vtable->destroy(exec_ctx, policy);
} }
} }

@ -217,7 +217,7 @@ static void subchannel_destroy(grpc_exec_ctx *exec_ctx, void *arg,
grpc_slice_unref_internal(exec_ctx, c->initial_connect_string); grpc_slice_unref_internal(exec_ctx, c->initial_connect_string);
grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker); grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker);
grpc_connector_unref(exec_ctx, c->connector); grpc_connector_unref(exec_ctx, c->connector);
grpc_pollset_set_destroy(c->pollset_set); grpc_pollset_set_destroy(exec_ctx, c->pollset_set);
grpc_subchannel_key_destroy(exec_ctx, c->key); grpc_subchannel_key_destroy(exec_ctx, c->key);
gpr_free(c); gpr_free(c);
} }

@ -244,7 +244,7 @@ static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) {
if (r->resolved_result != NULL) { if (r->resolved_result != NULL) {
grpc_channel_args_destroy(exec_ctx, r->resolved_result); grpc_channel_args_destroy(exec_ctx, r->resolved_result);
} }
grpc_pollset_set_destroy(r->interested_parties); grpc_pollset_set_destroy(exec_ctx, r->interested_parties);
gpr_free(r->name_to_resolve); gpr_free(r->name_to_resolve);
gpr_free(r->default_port); gpr_free(r->default_port);
grpc_channel_args_destroy(exec_ctx, r->channel_args); grpc_channel_args_destroy(exec_ctx, r->channel_args);

@ -93,8 +93,9 @@ void grpc_httpcli_context_init(grpc_httpcli_context *context) {
context->pollset_set = grpc_pollset_set_create(); context->pollset_set = grpc_pollset_set_create();
} }
void grpc_httpcli_context_destroy(grpc_httpcli_context *context) { void grpc_httpcli_context_destroy(grpc_exec_ctx *exec_ctx,
grpc_pollset_set_destroy(context->pollset_set); grpc_httpcli_context *context) {
grpc_pollset_set_destroy(exec_ctx, context->pollset_set);
} }
static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req, static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req,

@ -83,7 +83,8 @@ typedef struct grpc_httpcli_request {
typedef struct grpc_http_response grpc_httpcli_response; typedef struct grpc_http_response grpc_httpcli_response;
void grpc_httpcli_context_init(grpc_httpcli_context *context); void grpc_httpcli_context_init(grpc_httpcli_context *context);
void grpc_httpcli_context_destroy(grpc_httpcli_context *context); void grpc_httpcli_context_destroy(grpc_exec_ctx *exec_ctx,
grpc_httpcli_context *context);
/* Asynchronously perform a HTTP GET. /* Asynchronously perform a HTTP GET.
'context' specifies the http context under which to do the get 'context' specifies the http context under which to do the get

@ -1842,13 +1842,12 @@ static grpc_pollset_set *pollset_set_create(void) {
return pss; return pss;
} }
static void pollset_set_destroy(grpc_pollset_set *pss) { static void pollset_set_destroy(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pss) {
gpr_mu_destroy(&pss->po.mu); gpr_mu_destroy(&pss->po.mu);
if (pss->po.pi != NULL) { if (pss->po.pi != NULL) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; PI_UNREF(exec_ctx, pss->po.pi, "pss_destroy");
PI_UNREF(&exec_ctx, pss->po.pi, "pss_destroy");
grpc_exec_ctx_finish(&exec_ctx);
} }
gpr_free(pss); gpr_free(pss);

@ -149,7 +149,7 @@ static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *rec,
static bool fd_is_orphaned(grpc_fd *fd); static bool fd_is_orphaned(grpc_fd *fd);
/* Reference counting for fds */ /* Reference counting for fds */
/*#define GRPC_FD_REF_COUNT_DEBUG*/ //#define GRPC_FD_REF_COUNT_DEBUG
#ifdef GRPC_FD_REF_COUNT_DEBUG #ifdef GRPC_FD_REF_COUNT_DEBUG
static void fd_ref(grpc_fd *fd, const char *reason, const char *file, int line); static void fd_ref(grpc_fd *fd, const char *reason, const char *file, int line);
static void fd_unref(grpc_fd *fd, const char *reason, const char *file, static void fd_unref(grpc_fd *fd, const char *reason, const char *file,
@ -283,8 +283,8 @@ cv_fd_table g_cvfds;
static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file, static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file,
int line) { int line) {
gpr_log(GPR_DEBUG, "FD %d %p ref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n, gpr_log(GPR_DEBUG, "FD %d %p ref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n,
gpr_atm_no_barrier_load(&fd->refst), (int)gpr_atm_no_barrier_load(&fd->refst),
gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line); (int)gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
#else #else
#define REF_BY(fd, n, reason) ref_by(fd, n) #define REF_BY(fd, n, reason) ref_by(fd, n)
#define UNREF_BY(fd, n, reason) unref_by(fd, n) #define UNREF_BY(fd, n, reason) unref_by(fd, n)
@ -298,8 +298,8 @@ static void unref_by(grpc_fd *fd, int n, const char *reason, const char *file,
int line) { int line) {
gpr_atm old; gpr_atm old;
gpr_log(GPR_DEBUG, "FD %d %p unref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n, gpr_log(GPR_DEBUG, "FD %d %p unref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n,
gpr_atm_no_barrier_load(&fd->refst), (int)gpr_atm_no_barrier_load(&fd->refst),
gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line); (int)gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
#else #else
static void unref_by(grpc_fd *fd, int n) { static void unref_by(grpc_fd *fd, int n) {
gpr_atm old; gpr_atm old;
@ -1137,12 +1137,27 @@ static grpc_pollset_set *pollset_set_create(void) {
return pollset_set; return pollset_set;
} }
static void pollset_set_destroy(grpc_pollset_set *pollset_set) { static void pollset_set_destroy(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pollset_set) {
size_t i; size_t i;
gpr_mu_destroy(&pollset_set->mu); gpr_mu_destroy(&pollset_set->mu);
for (i = 0; i < pollset_set->fd_count; i++) { for (i = 0; i < pollset_set->fd_count; i++) {
GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set"); GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set");
} }
for (i = 0; i < pollset_set->pollset_count; i++) {
grpc_pollset *pollset = pollset_set->pollsets[i];
gpr_mu_lock(&pollset->mu);
pollset->pollset_set_count--;
/* check shutdown */
if (pollset->shutting_down && !pollset->called_shutdown &&
!pollset_has_observers(pollset)) {
pollset->called_shutdown = 1;
gpr_mu_unlock(&pollset->mu);
finish_shutdown(exec_ctx, pollset);
} else {
gpr_mu_unlock(&pollset->mu);
}
}
gpr_free(pollset_set->pollsets); gpr_free(pollset_set->pollsets);
gpr_free(pollset_set->pollset_sets); gpr_free(pollset_set->pollset_sets);
gpr_free(pollset_set->fds); gpr_free(pollset_set->fds);
@ -1160,9 +1175,9 @@ static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,
if (pollset_set->pollset_count == pollset_set->pollset_capacity) { if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
pollset_set->pollset_capacity = pollset_set->pollset_capacity =
GPR_MAX(8, 2 * pollset_set->pollset_capacity); GPR_MAX(8, 2 * pollset_set->pollset_capacity);
pollset_set->pollsets = gpr_realloc( pollset_set->pollsets =
pollset_set->pollsets, gpr_realloc(pollset_set->pollsets, pollset_set->pollset_capacity *
pollset_set->pollset_capacity * sizeof(*pollset_set->pollsets)); sizeof(*pollset_set->pollsets));
} }
pollset_set->pollsets[pollset_set->pollset_count++] = pollset; pollset_set->pollsets[pollset_set->pollset_count++] = pollset;
for (i = 0, j = 0; i < pollset_set->fd_count; i++) { for (i = 0, j = 0; i < pollset_set->fd_count; i++) {

@ -215,8 +215,9 @@ grpc_pollset_set *grpc_pollset_set_create(void) {
return g_event_engine->pollset_set_create(); return g_event_engine->pollset_set_create();
} }
void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set) { void grpc_pollset_set_destroy(grpc_exec_ctx *exec_ctx,
g_event_engine->pollset_set_destroy(pollset_set); grpc_pollset_set *pollset_set) {
g_event_engine->pollset_set_destroy(exec_ctx, pollset_set);
} }
void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,

@ -74,7 +74,8 @@ typedef struct grpc_event_engine_vtable {
struct grpc_fd *fd); struct grpc_fd *fd);
grpc_pollset_set *(*pollset_set_create)(void); grpc_pollset_set *(*pollset_set_create)(void);
void (*pollset_set_destroy)(grpc_pollset_set *pollset_set); void (*pollset_set_destroy)(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pollset_set);
void (*pollset_set_add_pollset)(grpc_exec_ctx *exec_ctx, void (*pollset_set_add_pollset)(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pollset_set, grpc_pollset_set *pollset_set,
grpc_pollset *pollset); grpc_pollset *pollset);

@ -44,7 +44,8 @@
typedef struct grpc_pollset_set grpc_pollset_set; typedef struct grpc_pollset_set grpc_pollset_set;
grpc_pollset_set *grpc_pollset_set_create(void); grpc_pollset_set *grpc_pollset_set_create(void);
void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set); void grpc_pollset_set_destroy(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pollset_set);
void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,
grpc_pollset_set *pollset_set, grpc_pollset_set *pollset_set,
grpc_pollset *pollset); grpc_pollset *pollset);

@ -41,7 +41,8 @@ grpc_pollset_set* grpc_pollset_set_create(void) {
return (grpc_pollset_set*)((intptr_t)0xdeafbeef); return (grpc_pollset_set*)((intptr_t)0xdeafbeef);
} }
void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) {} void grpc_pollset_set_destroy(grpc_exec_ctx* exec_ctx,
grpc_pollset_set* pollset_set) {}
void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx, void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx,
grpc_pollset_set* pollset_set, grpc_pollset_set* pollset_set,

@ -42,7 +42,8 @@ grpc_pollset_set* grpc_pollset_set_create(void) {
return (grpc_pollset_set*)((intptr_t)0xdeafbeef); return (grpc_pollset_set*)((intptr_t)0xdeafbeef);
} }
void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) {} void grpc_pollset_set_destroy(grpc_exec_ctx* exec_ctx,
grpc_pollset_set* pollset_set) {}
void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx, void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx,
grpc_pollset_set* pollset_set, grpc_pollset_set* pollset_set,

@ -154,7 +154,7 @@ static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) {
} }
gpr_mu_unlock(g_polling_mu); gpr_mu_unlock(g_polling_mu);
grpc_httpcli_context_destroy(&context); grpc_httpcli_context_destroy(exec_ctx, &context);
grpc_closure_init(&destroy_closure, destroy_pollset, grpc_closure_init(&destroy_closure, destroy_pollset,
grpc_polling_entity_pollset(&detector.pollent), grpc_polling_entity_pollset(&detector.pollent),
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);

@ -898,10 +898,10 @@ grpc_jwt_verifier *grpc_jwt_verifier_create(
return v; return v;
} }
void grpc_jwt_verifier_destroy(grpc_jwt_verifier *v) { void grpc_jwt_verifier_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_verifier *v) {
size_t i; size_t i;
if (v == NULL) return; if (v == NULL) return;
grpc_httpcli_context_destroy(&v->http_ctx); grpc_httpcli_context_destroy(exec_ctx, &v->http_ctx);
if (v->mappings != NULL) { if (v->mappings != NULL) {
for (i = 0; i < v->num_mappings; i++) { for (i = 0; i < v->num_mappings; i++) {
gpr_free(v->mappings[i].email_domain); gpr_free(v->mappings[i].email_domain);

@ -109,7 +109,8 @@ grpc_jwt_verifier *grpc_jwt_verifier_create(
size_t num_mappings); size_t num_mappings);
/*The verifier must not be destroyed if there are still outstanding callbacks.*/ /*The verifier must not be destroyed if there are still outstanding callbacks.*/
void grpc_jwt_verifier_destroy(grpc_jwt_verifier *verifier); void grpc_jwt_verifier_destroy(grpc_exec_ctx *exec_ctx,
grpc_jwt_verifier *verifier);
/* User provided callback that will be called when the verification of the JWT /* User provided callback that will be called when the verification of the JWT
is done (maybe in another thread). is done (maybe in another thread).

@ -124,7 +124,7 @@ static void oauth2_token_fetcher_destruct(grpc_exec_ctx *exec_ctx,
(grpc_oauth2_token_fetcher_credentials *)creds; (grpc_oauth2_token_fetcher_credentials *)creds;
grpc_credentials_md_store_unref(exec_ctx, c->access_token_md); grpc_credentials_md_store_unref(exec_ctx, c->access_token_md);
gpr_mu_destroy(&c->mu); gpr_mu_destroy(&c->mu);
grpc_httpcli_context_destroy(&c->httpcli_context); grpc_httpcli_context_destroy(exec_ctx, &c->httpcli_context);
} }
grpc_credentials_status grpc_credentials_status

@ -110,7 +110,7 @@ static void proxy_connection_unref(grpc_exec_ctx* exec_ctx,
grpc_endpoint_destroy(exec_ctx, conn->client_endpoint); grpc_endpoint_destroy(exec_ctx, conn->client_endpoint);
if (conn->server_endpoint != NULL) if (conn->server_endpoint != NULL)
grpc_endpoint_destroy(exec_ctx, conn->server_endpoint); grpc_endpoint_destroy(exec_ctx, conn->server_endpoint);
grpc_pollset_set_destroy(conn->pollset_set); grpc_pollset_set_destroy(exec_ctx, conn->pollset_set);
grpc_slice_buffer_destroy_internal(exec_ctx, &conn->client_read_buffer); grpc_slice_buffer_destroy_internal(exec_ctx, &conn->client_read_buffer);
grpc_slice_buffer_destroy_internal(exec_ctx, grpc_slice_buffer_destroy_internal(exec_ctx,
&conn->client_deferred_write_buffer); &conn->client_deferred_write_buffer);

@ -209,7 +209,7 @@ int main(int argc, char **argv) {
test_get(port); test_get(port);
test_post(port); test_post(port);
grpc_httpcli_context_destroy(&g_context); grpc_httpcli_context_destroy(&exec_ctx, &g_context);
grpc_closure_init(&destroyed, destroy_pops, &g_pops, grpc_closure_init(&destroyed, destroy_pops, &g_pops,
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);
grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops), grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops),

@ -212,7 +212,7 @@ int main(int argc, char **argv) {
test_get(port); test_get(port);
test_post(port); test_post(port);
grpc_httpcli_context_destroy(&g_context); grpc_httpcli_context_destroy(&exec_ctx, &g_context);
grpc_closure_init(&destroyed, destroy_pops, &g_pops, grpc_closure_init(&destroyed, destroy_pops, &g_pops,
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);
grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops), grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops),

@ -59,10 +59,11 @@ void init_test_pollset_sets(test_pollset_set *pollset_sets, const int num_pss) {
} }
} }
void cleanup_test_pollset_sets(test_pollset_set *pollset_sets, void cleanup_test_pollset_sets(grpc_exec_ctx *exec_ctx,
test_pollset_set *pollset_sets,
const int num_pss) { const int num_pss) {
for (int i = 0; i < num_pss; i++) { for (int i = 0; i < num_pss; i++) {
grpc_pollset_set_destroy(pollset_sets[i].pss); grpc_pollset_set_destroy(exec_ctx, pollset_sets[i].pss);
pollset_sets[i].pss = NULL; pollset_sets[i].pss = NULL;
} }
} }
@ -297,7 +298,7 @@ static void pollset_set_test_basic() {
cleanup_test_fds(&exec_ctx, tfds, num_fds); cleanup_test_fds(&exec_ctx, tfds, num_fds);
cleanup_test_pollsets(&exec_ctx, pollsets, num_ps); cleanup_test_pollsets(&exec_ctx, pollsets, num_ps);
cleanup_test_pollset_sets(pollset_sets, num_pss); cleanup_test_pollset_sets(&exec_ctx, pollset_sets, num_pss);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
} }
@ -372,7 +373,7 @@ void pollset_set_test_dup_fds() {
cleanup_test_fds(&exec_ctx, tfds, num_fds); cleanup_test_fds(&exec_ctx, tfds, num_fds);
cleanup_test_pollsets(&exec_ctx, &pollset, num_ps); cleanup_test_pollsets(&exec_ctx, &pollset, num_ps);
cleanup_test_pollset_sets(pollset_sets, num_pss); cleanup_test_pollset_sets(&exec_ctx, pollset_sets, num_pss);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
} }
@ -437,7 +438,7 @@ void pollset_set_test_empty_pollset() {
cleanup_test_fds(&exec_ctx, tfds, num_fds); cleanup_test_fds(&exec_ctx, tfds, num_fds);
cleanup_test_pollsets(&exec_ctx, pollsets, num_ps); cleanup_test_pollsets(&exec_ctx, pollsets, num_ps);
cleanup_test_pollset_sets(&pollset_set, num_pss); cleanup_test_pollset_sets(&exec_ctx, &pollset_set, num_pss);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
} }

@ -74,7 +74,7 @@ void args_finish(grpc_exec_ctx *exec_ctx, args_struct *args) {
GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline())); GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline()));
grpc_resolved_addresses_destroy(args->addrs); grpc_resolved_addresses_destroy(args->addrs);
grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset);
grpc_pollset_set_destroy(args->pollset_set); grpc_pollset_set_destroy(exec_ctx, args->pollset_set);
grpc_closure do_nothing_cb; grpc_closure do_nothing_cb;
grpc_closure_init(&do_nothing_cb, do_nothing, NULL, grpc_closure_init(&do_nothing_cb, do_nothing, NULL,
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);

@ -69,7 +69,7 @@ void args_finish(grpc_exec_ctx *exec_ctx, args_struct *args) {
GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline())); GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline()));
grpc_resolved_addresses_destroy(args->addrs); grpc_resolved_addresses_destroy(args->addrs);
grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset);
grpc_pollset_set_destroy(args->pollset_set); grpc_pollset_set_destroy(exec_ctx, args->pollset_set);
grpc_closure do_nothing_cb; grpc_closure do_nothing_cb;
grpc_closure_init(&do_nothing_cb, do_nothing, NULL, grpc_closure_init(&do_nothing_cb, do_nothing, NULL,
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);

@ -207,7 +207,7 @@ int main(int argc, char **argv) {
test_succeeds(); test_succeeds();
gpr_log(GPR_ERROR, "End of first test"); gpr_log(GPR_ERROR, "End of first test");
test_fails(); test_fails();
grpc_pollset_set_destroy(g_pollset_set); grpc_pollset_set_destroy(&exec_ctx, g_pollset_set);
grpc_closure_init(&destroyed, destroy_pollset, g_pollset, grpc_closure_init(&destroyed, destroy_pollset, g_pollset,
grpc_schedule_on_exec_ctx); grpc_schedule_on_exec_ctx);
grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed);

@ -386,9 +386,9 @@ static void test_jwt_verifier_google_email_issuer_success(void) {
GPR_ASSERT(jwt != NULL); GPR_ASSERT(jwt != NULL);
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_success, (void *)expected_user_data); on_verification_success, (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -420,9 +420,9 @@ static void test_jwt_verifier_custom_email_issuer_success(void) {
GPR_ASSERT(jwt != NULL); GPR_ASSERT(jwt != NULL);
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_success, (void *)expected_user_data); on_verification_success, (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -469,9 +469,9 @@ static void test_jwt_verifier_url_issuer_success(void) {
GPR_ASSERT(jwt != NULL); GPR_ASSERT(jwt != NULL);
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_success, (void *)expected_user_data); on_verification_success, (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -511,9 +511,9 @@ static void test_jwt_verifier_url_issuer_bad_config(void) {
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_key_retrieval_error, on_verification_key_retrieval_error,
(void *)expected_user_data); (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -534,9 +534,9 @@ static void test_jwt_verifier_bad_json_key(void) {
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_key_retrieval_error, on_verification_key_retrieval_error,
(void *)expected_user_data); (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -588,9 +588,9 @@ static void test_jwt_verifier_bad_signature(void) {
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience,
on_verification_bad_signature, on_verification_bad_signature,
(void *)expected_user_data); (void *)expected_user_data);
grpc_exec_ctx_finish(&exec_ctx);
gpr_free(jwt); gpr_free(jwt);
grpc_jwt_verifier_destroy(verifier); grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }
@ -619,8 +619,8 @@ static void test_jwt_verifier_bad_format(void) {
grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, "bad jwt", grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, "bad jwt",
expected_audience, on_verification_bad_format, expected_audience, on_verification_bad_format,
(void *)expected_user_data); (void *)expected_user_data);
grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
grpc_jwt_verifier_destroy(verifier);
grpc_httpcli_set_override(NULL, NULL); grpc_httpcli_set_override(NULL, NULL);
} }

@ -123,14 +123,15 @@ int main(int argc, char **argv) {
gpr_inf_future(GPR_CLOCK_MONOTONIC)))) gpr_inf_future(GPR_CLOCK_MONOTONIC))))
sync.is_done = true; sync.is_done = true;
gpr_mu_unlock(sync.mu); gpr_mu_unlock(sync.mu);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_flush(&exec_ctx);
gpr_mu_lock(sync.mu); gpr_mu_lock(sync.mu);
} }
gpr_mu_unlock(sync.mu); gpr_mu_unlock(sync.mu);
gpr_free(sync.pollset); gpr_free(sync.pollset);
grpc_jwt_verifier_destroy(verifier); grpc_jwt_verifier_destroy(&exec_ctx, verifier);
grpc_exec_ctx_finish(&exec_ctx);
gpr_cmdline_destroy(cl); gpr_cmdline_destroy(cl);
grpc_shutdown(); grpc_shutdown();
return !sync.success; return !sync.success;

@ -121,7 +121,7 @@ void grpc_free_port_using_server(char *server, int port) {
} }
gpr_mu_unlock(pr.mu); gpr_mu_unlock(pr.mu);
grpc_httpcli_context_destroy(&context); grpc_httpcli_context_destroy(&exec_ctx, &context);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops),
shutdown_closure); shutdown_closure);
@ -245,7 +245,7 @@ int grpc_pick_port_using_server(char *server) {
gpr_mu_unlock(pr.mu); gpr_mu_unlock(pr.mu);
grpc_http_response_destroy(&pr.response); grpc_http_response_destroy(&pr.response);
grpc_httpcli_context_destroy(&context); grpc_httpcli_context_destroy(&exec_ctx, &context);
grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops),
shutdown_closure); shutdown_closure);
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);

Loading…
Cancel
Save