change memory order of operations on disconnect_error_ in client_channel

pull/19759/head
Qiancheng Zhao 5 years ago
parent 99af46ca64
commit 39bc63c88c
  1. 8
      src/core/ext/filters/client_channel/client_channel.cc

@ -1717,10 +1717,10 @@ void ChannelData::StartTransportOpLocked(void* arg, grpc_error* ignored) {
GRPC_ERROR_UNREF(op->disconnect_with_error);
} else {
// Disconnect.
grpc_error* error = GRPC_ERROR_NONE;
GPR_ASSERT(chand->disconnect_error_.CompareExchangeStrong(
&error, op->disconnect_with_error, MemoryOrder::ACQ_REL,
MemoryOrder::ACQUIRE));
GPR_ASSERT(chand->disconnect_error_.Load(MemoryOrder::RELAXED) ==
GRPC_ERROR_NONE);
chand->disconnect_error_.Store(op->disconnect_with_error,
MemoryOrder::RELEASE);
New<ConnectivityStateAndPickerSetter>(
chand, GRPC_CHANNEL_SHUTDOWN, "shutdown from API",
UniquePtr<LoadBalancingPolicy::SubchannelPicker>(

Loading…
Cancel
Save