libcassandra icon indicating copy to clipboard operation
libcassandra copied to clipboard

Using factory->create() on an endpoint that is down, causes a memroy leak

Open Skmirch opened this issue 14 years ago • 1 comments

in the file cassandra_factory.cc , in the function.....

CassandraClient *CassandraFactory::createThriftClient(const string &in_host, int in_port, bool framed_transport)

In this function the open is called after the pointer to CassandraClient is created. Any exception in open causes the CassandraClient pointer to be lost resulting in a memory leak. Not being able to connect to an endpoint throws the thrift TTransport exception which therefore results in a memory leak that I am seeing.

Reversing the order like so solves the problem...

transport->open(); /* throws an exception */ CassandraClient *client= new(std::nothrow) CassandraClient(protocol);

This has been tested to work.

Thanks. -- Sandeep

Skmirch avatar Sep 30 '10 21:09 Skmirch

Thanks Sandeep. I've committed this fix in minaguib/libcassandra@cb68df9eddf50d5ad68436d1ab744a7ffd679793

I'll send Padraig a pull request including it.

minaguib avatar Apr 01 '11 18:04 minaguib