Opps. Yep, thanks!
On Wed, Mar 17, 2010 at 1:47 PM, Jonathan Ellis <jbel...@gmail.com> wrote: > You didn't call tr.open() ? > > On Wed, Mar 17, 2010 at 3:45 PM, Sonny Heer <sonnyh...@gmail.com> wrote: >> I'm getting: >> org.apache.thrift.transport.TTransportException: Cannot write to null >> outputStream >> at >> org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:137) >> at >> org.apache.thrift.protocol.TBinaryProtocol.writeI32(TBinaryProtocol.java:152) >> at >> org.apache.thrift.protocol.TBinaryProtocol.writeMessageBegin(TBinaryProtocol.java:80) >> at >> org.apache.cassandra.service.Cassandra$Client.send_get_string_property(Cassandra.java:681) >> at >> org.apache.cassandra.service.Cassandra$Client.get_string_property(Cassandra.java:675) >> at >> com.atsid.cassandra.ngram.test.TestRingConnection.main(TestRingConnection.java:26) >> >> >> when running: >> >> TTransport tr = new TSocket("localhost", 9160); >> TProtocol proto = new TBinaryProtocol(tr); >> Cassandra.Client client = new Cassandra.Client(proto); >> try { >> String jsonServerList = >> client.get_string_property("token map"); >> >> >> What am I doing wrong here? >> >> On Wed, Mar 17, 2010 at 11:33 AM, Sonny Heer <sonnyh...@gmail.com> wrote: >>> 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). >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>> >>> >> >