below is the commented out code i once used. i think it is from the 0.5 days, so it might not even work now. not sure. the bootstrapHostArr is simply a list of host information used to bootstrap the process. connectToHost is a method used to generate a Cassandra.Client object. there is sample code on cassandra wiki for doing this. good luck!

// can't use this on cassandra because the tokens returned are for the "internal cassandra server comm", not the thrift IPs
//        String    hostList = null;
//        for ( HostInfo hi : bootstrapHostArr ) {
//            Cassandra.Client    client = null;
//            try {
//                client = connectToHost( hi.getHostName(), hi.getPort() );
//                hostList = client.get_string_property( "token map" );
//                break;
//            }
//            catch ( TTransportException e ) {
// logger.error( "cannot connect to bootstrap node - will try another if available : " + hi.getNameAndPort() );
//            }
//            catch ( TException e ) {
// logger.error( "cannot retrieve host list from node - will try another if available : " + hi.getNameAndPort() );
//            }
//            finally {
//                if ( null != client ) {
//                    disconnectFromCluster( client );
//                }
//            }
//        }
// // if ( null != hostList ) { // ArrayList<String> newArr;
//            try {
//                JSONObject    jsonObj = new JSONObject( hostList );
//                String[]    ringArr = JSONObject.getNames( jsonObj );
//                newArr = new ArrayList<String>( ringArr.length );
// // for ( int i=0;i < ringArr.length;i++ ) {
//                    String    hostName = jsonObj.getString( ringArr[i] );
//                    if ( !hostIgnoreSet.contains(hostName) ) {
//                        newArr.add( hostName );
//                    }
//                }
//            }
//            catch ( JSONException e ) {
// throw new ClusterRuntimeException( "Could not parse JSON returned from Cassandra - don't know what to do? ARRRRGGGG" );
//            }


Sonny Heer wrote:
Is there some example code on how to do this?

On Tue, Mar 16, 2010 at 3:07 PM, Jonathan Ellis <jbel...@gmail.com> wrote:
token map is an internal representation, so returning the internal IPs
is correct, even though this makes it slightly more difficult to use
for thrift clients.

On Tue, Mar 16, 2010 at 4:55 PM, B. Todd Burruss <bburr...@real.com> wrote:
if you choose #3 - get_string_property("token map") - keep in mind that the
IPs returned from this call are the IPs used for "ListenAddress" param in
storage-conf.xml.  In my case we have two NICs and I set this to be an IP
that is only for "node to node" communication.  The "ThriftAddress" param is
the one i really want.  maybe this has been changed, "fixed" ;), haven't
tested in a while.

Jonathan Ellis wrote:
http://wiki.apache.org/cassandra/FAQ#node_clients_connect_to

On Tue, Mar 16, 2010 at 4:30 PM, Sonny Heer <sonnyh...@gmail.com> wrote:

How can I accomplish this?

The way I'm doing it now it is creating a TSocket connection using a
static IP of one of the boxes on Cassandra:
      TTransport tr = new TSocket(host, port.intValue());
      TProtocol proto = new TBinaryProtocol(tr);
      Cassandra.Client client = new Cassandra.Client(proto);
      tr.open();

With a larger cluster I would imagine there is another preferred
solution with no single point of failure (e.g. that one box  goes
down).


Reply via email to