title: Titan backend exception on connection
body: <p>I am using Titan 0.54 and Cassandra 2.1.6.</p>
  
  <p>I have written a Java program that is able to connect to Titan and run a workload on my local Cassandra cluster. When I try to run the same software on a another machine (with its own cluster) I get the error below (with storage.backend set to "cassandrathrift"):</p>
  
  <pre><code>Exception in thread "main" com.thinkaurelius.titan.core.TitanException: Could not execute operation due to backend exception
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:144)
      at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.get(KCVSConfiguration.java:92)
      at com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration.isFrozen(BasicConfiguration.java:93)
      at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.&lt;init&gt;(GraphDatabaseConfiguration.java:1289)
      at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:93)
      at com.thinkaurelius.titan.core.TitanFactory$Builder.open(TitanFactory.java:134)
      at com.x.tweetgraph.writer.graph.TitanConnector.getConnection(TitanConnector.java:17)
      at com.x.tweetgraph.writer.graph.GraphManager.loadGraph(GraphManager.java:186)
      at com.x.tweetgraph.writer.graph.GraphManager.init(GraphManager.java:99)
      at com.x.tweetgraph.writer.graph.Main.main(Main.java:26)
  Caused by: com.thinkaurelius.titan.diskstorage.PermanentBackendException: Permanent failure in storage backend
      at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.convertException(CassandraThriftKeyColumnValueStore.java:249)
      at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:148)
      at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:91)
      at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice(CassandraThriftKeyColumnValueStore.java:80)
      at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration$1.call(KCVSConfiguration.java:95)
      at com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration$1.call(KCVSConfiguration.java:92)
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:133)
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation$1.call(BackendOperation.java:147)
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)
      at com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)
      ... 10 more
  Caused by: TimedOutException()
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696)
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633)
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559)
      at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
      at org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741)
      at org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725)
      at com.thinkaurelius.titan.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:129)
      ... 18 more
  </code></pre>
  
  <p>With storage.backend set to "cassandra" I get the following:</p>
  
  <pre><code>Caused by: TimedOutException()
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696)
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633)
      at org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559)
      at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
      at org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741)
      at org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725)
      at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4$1.internalExecute(ThriftColumnFamilyQueryImpl.java:533)
      at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4$1.internalExecute(ThriftColumnFamilyQueryImpl.java:530)
      at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
      ... 24 more
  </code></pre>
  
  <p>Both options work on my local setup (single-node Cassandra cluster). From cassandra.yaml:</p>
  
  <pre><code>listen_address: 136.225.5.31
  start_native_transport: true
  native_transport_port: 12742
  start_rpc: true
  rpc_address: 136.225.5.31
  rpc_port: 12760
  </code></pre>
  
  <p>The setup I am trying to connect to is a three-node cluster:</p>
  
  <pre><code>listen_interface: eth1
  start_native_transport: true
  native_transport_port: 12742
  start_rpc: true
  rpc_interface: eth1
  rpc_port: 12760
  </code></pre>
  
  <p>On the first setup I get a Titan connection using the rpc_address + rpc_port, but when I try that on the second setup I get the errors above.</p>
  
  <p>Do I need to use a different setting than the node IP for storage.hostname to account for rpc_interface being specified instead of rpc_address in the second setup? Or what could the problem be?</p>
  
  <p>I can connect to the second cluster using cqlsh (and with other software I have written), so it's not an issue with the cluster. </p>