alibaba / tfs

TFS (Taobao File System) is a distributed file system similar to GFS.
http://tfs.taobao.org
GNU General Public License v2.0
1.24k stars 457 forks source link

NewClient 对象 内存泄漏问题 #8

Open huaizong opened 9 years ago

huaizong commented 9 years ago

int DataService::post_message_to_server 在调用 common::post_msg_to_server 失败时,没有释放NewClient 对象 client, 有内存泄漏问题。

int BuildTable::send_msg_to_server(const uint64_t server, const int8_t phase) 在调用 common::post_msg_to_server 失败时,同样没有释放NewClient 对象 client, 存在内存泄漏问题。

--- a/src/dataserver/dataservice.cpp
+++ b/src/dataserver/dataservice.cpp
@@ -752,6 +752,8 @@ namespace tfs
           {
             NewClient* client = NewClientManager::get_instance().create_client();
             iret = TFS_SUCCESS == common::post_msg_to_server(erase_self, client, message, ds_async_callback) ? 1 : -1;
+            if (1 != iret)
+              NewClientManager::get_instance().destroy_client(client);
           }
           else
           {