From 4120ac4755103c7b82387bf2f1c3e58cc6b91519 Mon Sep 17 00:00:00 2001 From: Haoyu Zhang Date: Tue, 15 Oct 2019 15:15:32 -0700 Subject: [PATCH] De-flake and re-enable asan c_api test. Treat replaced workers as removed then added back, so that there is one and only one copy of remote task name in the remote_contexts_ list. PiperOrigin-RevId: 274898907 Change-Id: I78f2e4ba9d8d26a853e55d40be1c67907be07ec4 --- tensorflow/c/eager/c_api.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tensorflow/c/eager/c_api.cc b/tensorflow/c/eager/c_api.cc index 615670cebda..be767d700ae 100644 --- a/tensorflow/c/eager/c_api.cc +++ b/tensorflow/c/eager/c_api.cc @@ -465,17 +465,6 @@ tensorflow::Status UpdateTFE_ContextWithServerDef( LOG_AND_RETURN_IF_ERROR(GetReplacedFromExistingWorkers( &existing_workers, context_id, ctx->context->GetContextViewId(), server_def, remote_eager_workers.get(), &replaced_workers)); - if (!replaced_workers.empty()) { - // Also adding replaced workers so that we recreate remote devices and - // contexts, and re-register functions on those workers - added_workers.insert(added_workers.end(), replaced_workers.begin(), - replaced_workers.end()); - for (const string& w : replaced_workers) { - existing_workers.erase( - std::remove(existing_workers.begin(), existing_workers.end(), w), - existing_workers.end()); - } - } if (VLOG_IS_ON(1)) { VLOG(1) << "Updating cluster with following changes"; for (const string& w : added_workers) VLOG(1) << " Added worker " << w; @@ -484,10 +473,21 @@ tensorflow::Status UpdateTFE_ContextWithServerDef( for (const string& w : replaced_workers) VLOG(1) << " Replaced worker " << w; } + if (!replaced_workers.empty()) { + // Treat replaced workers as removed then added back, so that we recreate + // remote devices and contexts, and re-register functions on those workers + removed_workers.insert(removed_workers.end(), replaced_workers.begin(), + replaced_workers.end()); + added_workers.insert(added_workers.end(), replaced_workers.begin(), + replaced_workers.end()); + for (const string& w : replaced_workers) { + existing_workers.erase( + std::remove(existing_workers.begin(), existing_workers.end(), w), + existing_workers.end()); + } + } LOG_AND_RETURN_IF_ERROR( RemoveRemoteDevicesFromMgr(removed_workers, remote_device_mgr.get())); - LOG_AND_RETURN_IF_ERROR( - RemoveRemoteDevicesFromMgr(replaced_workers, remote_device_mgr.get())); LOG_AND_RETURN_IF_ERROR(AddRemoteDevicesToMgr( added_workers, grpc_server->master_env()->worker_cache, remote_device_mgr.get()));