Skip to content
This repository

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

Open
Skmirch opened this Issue · 1 comment

2 participants

Skmirch Mina Naguib
Skmirch

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

Mina Naguib

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

I'll send Padraig a pull request including it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.