diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c
index 051f83aaa25453d5b44f196f8bba6ae3b3437174..60dabbc7808cd9a428a1cf49b53b5f38d847cb1a 100644
--- a/src/core/client_config/subchannel.c
+++ b/src/core/client_config/subchannel.c
@@ -519,6 +519,7 @@ static void publish_transport(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) {
   }
 
   /* publish */
+  gpr_atm_full_barrier();
   GPR_ASSERT(gpr_atm_rel_cas(&c->connected_subchannel, 0, (gpr_atm)con));
   c->connecting = 0;