We are using Cassandra 0.6.2 with hector/thrift client, and our
application performance is really slow. We are not sure that it is
because of hector/thrift connection or not.  Jonathan E. and other
people has suggested that using "TBuffferedTransport(TSocket) instead of
a  TSocket directly" performance has drastically improved. If that is
the case, why TBuffferedTransport (TSocket) is not added as part of the
hector client by default? Is there any technical reason not to add as
part of the Cassandra 0.6.2/ hector-0.6.0-13 release? 

 

Thanks in advance for your valuable input.

 

Regards

Subrata

 

/// Code snippet from Hector client: CassandraClientFactory.java

 

private Cassandra.Client createThriftClient(String  url, int port)

      throws TTransportException , TException {

    log.debug("Creating a new thrift connection to {}:{}", url, port);

    TTransport tr;

    if (useThriftFramedTransport) {

      tr = new TFramedTransport(new TSocket(url, port, timeout));

    } else {

      tr = new TSocket(url, port, timeout);               --- change to
TBuffferedTransport () for better performance

    }

    TProtocol proto = new TBinaryProtocol(tr);

    Cassandra.Client client = new Cassandra.Client(proto);

    try {

      tr.open();

    } catch (TTransportException e) {

      // Thrift exceptions aren't very good in reporting, so we have to
catch the exception here and

      // add details to it.

      log.error("Unable to open transport to " + url + ":" + port, e);

      clientMonitor.incCounter(Counter.CONNECT_ERROR);

      throw new TTransportException("Unable to open transport to " + url
+ ":" + port + " , " +

          e.getLocalizedMessage(), e);

    }

    return client;

  }

 

 

 

Reply via email to