2012-07-22 14 views
6

Próbuję połączyć się z lokalną cassandra za pomocą astyanax, ale ciągle uzyskuję PoolTimeoutException. Jestem w stanie połączyć się z Kasandra za pomocą klienta cli lub hectora. Każdy pomysł, co robię źle?PoolTimeoutException podczas łączenia się z Cassandrą przez Astyanax

Dzięki.

Mój kod:

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() 

Wyjątek:

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) 

Odpowiedz

2

Byliśmy ten problem również. Dla nas okazało się, że jest to problem z wersją libthrift. Działa wersja 0.7.0. Wersja 0.6.1 nie. Sprawdź swoją klasę i zobacz ... Powodzenia.

-td

+0

"tom d" Niezły chwyt, dzięki! każdy, kto uaktualnia słoik astyanax do wersji 1.0.6 bez maven, nie zapomnij o uaktualnieniu libthrift do 0.7.0 –

2

Inną kwestią jest, jeśli slam danych do jednego węzła i masz puli wątków, 50 i tylko 1 połączenie za gospodarz, dostaniesz to samo, więc trzeba zrównoważyć liczbę wątków/hosta również w pewnych sytuacjach.

1

Próba połączenia przez niewłaściwy port również spowoduje ten błąd. Zobacz dyskusję this.

0

Wykonaj następujące czynności w cassandra.yaml

  1. Zaznacz pole rpc_address
  2. Skontrolować rpc_port
  3. Ustaw start_rpc do true
Powiązane problemy