2012-07-22 41 views
6

我尝试使用astyanax连接到本地cassandra,但不断获取PoolTimeoutException。我能够使用cli或hector客户端连接到cassandra。 任何想法我做错了什么?当通过Astyanax连接到Cassandra时出现PoolTimeoutException

谢谢。

我的代码:

val context = new AstyanaxContext.Builder() 
     .forCluster("cluster") 
     .forKeyspace(keyspace) 
     .withAstyanaxConfiguration(
       new AstyanaxConfigurationImpl() 
        .setDiscoveryType(NodeDiscoveryType.NONE) 
     ) 
     .withConnectionPoolConfiguration(
       new ConnectionPoolConfigurationImpl("ConnPool") 
        .setPort(9160) 
        .setMaxConnsPerHost(1) 
        .setMaxBlockedThreadsPerHost(1) 
        .setSeeds("127.0.0.1:9160") 
        .setConnectTimeout(10000) 
     ) 
     .withConnectionPoolMonitor(new CountingConnectionPoolMonitor()) 
     .buildKeyspace(ThriftFamilyFactory.getInstance()) 
    context.start() 
    return context.getEntity() 

例外:

Exception in thread "main" java.lang.RuntimeException: com.netflix.astyanax.connectionpool.exceptions.PoolTimeoutException: PoolTimeoutException: [host=127.0.0.1(127.0.0.1):9160, latency=10004(10004), attempts=1] Timed out waiting for connection 
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$7.getNextBlock(ThriftColumnFamilyQueryImpl.java:652) 
at com.netflix.astyanax.thrift.ThriftAllRowsImpl$1.hasNext(ThriftAllRowsImpl.java:61) 
at scala.collection.JavaConversions$JIteratorWrapper.hasNext(JavaConversions.scala:574) 
at scala.collection.Iterator$class.foreach(Iterator.scala:772) 
at scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:573) 
at scala.collection.IterableLike$class.foreach(IterableLike.scala:73) 
at scala.collection.JavaConversions$JIterableWrapper.foreach(JavaConversions.scala:587) 
at at scala.Function0$class.apply$mcV$sp(Function0.scala:34) 
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
at scala.App$$anonfun$main$1.apply(App.scala:60) 
at scala.App$$anonfun$main$1.apply(App.scala:60) 
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
at scala.collection.immutable.List.foreach(List.scala:76) 
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30) 
at scala.App$class.main(App.scala:60) 
at Caused by: com.netflix.astyanax.connectionpool.exceptions.PoolTimeoutException: PoolTimeoutException: [host=127.0.0.1(127.0.0.1):9160, latency=10004(10004), attempts=1] Timed out waiting for connection 
at com.netflix.astyanax.connectionpool.impl.SimpleHostConnectionPool.waitForConnection(SimpleHostConnectionPool.java:201) 
at com.netflix.astyanax.connectionpool.impl.SimpleHostConnectionPool.borrowConnection(SimpleHostConnectionPool.java:158) 
at com.netflix.astyanax.connectionpool.impl.RoundRobinExecuteWithFailover.borrowConnection(RoundRobinExecuteWithFailover.java:60) 
at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:50) 
at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:229) 
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$7.getNextBlock(ThriftColumnFamilyQueryImpl.java:623) 

回答

2

我们有这个问题为好。对我们来说,它变成libthrift的版本问题。版本0.7.0工作。版本0.6.1没有。检查你的班级路径,看看...祝你好运。

-td

+0

“汤姆d” 好抓,谢谢!任何人在没有maven的情况下将astyanax jar升级到v1.0.6时,不要忘记将libthrift升级到0.7.0 – 2012-08-09 13:38:32

2

的另一个问题是,如果你踩住数据到一个节点,你有50线程池,每个主机只有1个连接,你会得到同样的事情,所以你必须要平衡的线程数/在某些情况下也是主持人。

1

试图通过错误的端口连接也会出现此错误。请参阅this讨论。

0

不要在cassandra.yaml以下

  1. 检查rpc_address
  2. 检查rpc_port
  3. 设置start_rpctrue
相关问题