Cool thanks Todd. I'd be interested at some point to see the updated .6 version as well. Thanks again!
On Wed, Mar 17, 2010 at 9:24 AM, B. Todd Burruss <bburr...@real.com> wrote: > 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). >>>>>> >>>>>> >>>>>> >