Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bb760b0

Browse files
pschuhGoogle-ML-Automation
authored andcommitted
Reset factory eagerly so that WaitForQuiesce() is sure to drop all refs and
track refs for SocketServer::Connection. PiperOrigin-RevId: 856761720
1 parent 4282ee4 commit bb760b0

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

xla/python/transfer/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ cc_library(
231231
"@com_google_absl//absl/log:check",
232232
"@com_google_absl//absl/status",
233233
"@com_google_absl//absl/strings",
234-
"@com_google_absl//absl/strings:str_format",
235234
"@com_google_absl//absl/strings:string_view",
236235
"@com_google_absl//absl/synchronization",
237236
"@com_google_absl//absl/time",

xla/python/transfer/socket-server.cc

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,21 @@ class SocketServer::SocketNetworkState : public SocketFdPacketState {
5959
connections_->list.push_back(this);
6060
connection_it_ = --connections_->list.end();
6161
}
62-
explicit SocketNetworkState(std::shared_ptr<PullTable> table,
62+
explicit SocketNetworkState(std::shared_ptr<ConnectionList> connections,
63+
std::shared_ptr<PullTable> table,
6364
std::shared_ptr<BulkTransportFactory> factory,
6465
const SocketAddress& addr)
6566
: table_(std::move(table)),
6667
factory_(std::move(factory)),
67-
remote_addr_(addr) {
68+
remote_addr_(addr),
69+
connections_(std::move(connections)) {
70+
absl::MutexLock l(connections_->mu);
71+
connections_->list.push_back(this);
72+
connection_it_ = --connections_->list.end();
6873
}
6974

7075
~SocketNetworkState() override {
76+
factory_.reset();
7177
if (connections_) {
7278
absl::MutexLock l(connections_->mu);
7379
connections_->list.erase(connection_it_);
@@ -550,8 +556,8 @@ SocketServer::~SocketServer() {
550556

551557
tsl::RCReference<SocketServer::Connection> SocketServer::Connect(
552558
const SocketAddress& other_addr) {
553-
auto* local_ =
554-
new SocketNetworkState(pull_table_, bulk_transport_factory_, other_addr);
559+
auto* local_ = new SocketNetworkState(connections_, pull_table_,
560+
bulk_transport_factory_, other_addr);
555561
local_->StartBulkTransporting();
556562
local_->IncRef();
557563
local_->StartConnect();

0 commit comments

Comments
 (0)