Following temporary thrift client creations (e.g., communicating between a joining node and an old tail to get updates), the current code does not delete the thrift client object used to communicate. It used to be done as follows
client->rpc_call(...);
delete client;
But this would result in segmentation faults, presumably because the rpc_call() code has some degree of asynchrony with respect to network sockets, etc. To ensure the system doesn't crash, we don't delete these temporary objects, but we should figure out 1) whether this is a thrift issue or 2) what we can do in our code to perform the cleanup.
Following temporary thrift client creations (e.g., communicating between a joining node and an old tail to get updates), the current code does not delete the thrift client object used to communicate. It used to be done as follows
But this would result in segmentation faults, presumably because the rpc_call() code has some degree of asynchrony with respect to network sockets, etc. To ensure the system doesn't crash, we don't delete these temporary objects, but we should figure out 1) whether this is a thrift issue or 2) what we can do in our code to perform the cleanup.