1

ネットワーク トポロジを使用してキースペースを作成する際に問題が発生します。

コード:

// The Astyanax context I'm using
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
    .forCluster("Test Cluster")
    .forKeyspace("NetworkKS")
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
    .setDiscoveryType(NodeDiscoveryType.NONE))
    .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
    .setPort(9160)
    .setMaxConnsPerHost(10)
    .setInitConnsPerHost(1)
    .setSeeds("127.0.0.1:9160"))
    .withConnectionPoolMonitor(new Slf4jConnectionPoolMonitorImpl())
    .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();

// A different method takes the above context as a keyspace parameter
keyspace.createKeyspace(ImmutableMap.<String, Object>builder()
            .put("strategy_options", ImmutableMap.<String, Object>builder()
            .put("us-east", "3")
            .put("eu-west", "3")
            .put("replication_factor", "1").build())
            .put("strategy_class", "NetworkTopologyStrategy").build());

1 つのノードに networkstrategy キースペースを作成するのは無意味に思えますが、これは単なるテストです。機能するようになったら、別の Cassandra インスタンスをシードに追加します。

エラーは次のとおりです。

[AWT-EventQueue-0] WARN com.netflix.astyanax.connectionpool.impl.Slf4jConnectionPoolMonitorImpl - TransportException: [host=127.0.0.1(127.0.0.1):9160, latency=42(42), attempts=1]org.apache.thrift.transport.TTransportException
[AWT-EventQueue-0] INFO com.netflix.astyanax.connectionpool.impl.Slf4jConnectionPoolMonitorImpl - TransportException: [host=127.0.0.1(127.0.0.1):9160, latency=42(42), attempts=1]org.apache.thrift.transport.TTransportException
Jan 27, 2013 4:42:39 PM smail.cli.astyanax.Schema createNetworkKeyspace
SEVERE: null
com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=127.0.0.1(127.0.0.1):9160, latency=42(42), attempts=1]org.apache.thrift.transport.TTransportException
    at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197)
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:27)
    at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$1.execute(ThriftSyncConnectionFactoryImpl.java:136)
    at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:69)
    at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:248)
    at com.netflix.astyanax.thrift.ThriftKeyspaceImpl.createKeyspace(ThriftKeyspaceImpl.java:545)
    at smail.cli.astyanax.Schema.createNetworkKeyspace(Schema.java:121)
    at smail.cli.test.SchemaCreationTest.createNetKS(SchemaCreationTest.java:21)
    at smail.cli.test.SchemaCreationTest.runTest(SchemaCreationTest.java:50)
    at smail.cli.Main$1.run(Main.java:48)
4

1 に答える 1

1

最初にCassandra構成を更新すると、そのようなキースペースを作成できるようになります。cassandra-topology.propertiesデフォルト設定を伝えるか、データセンターとラックを記述するために、ノード構成を更新する必要があります。ファイルのデフォルトの内容は自明です。

それが適切にセットアップされた後、キースペースを適切に作成できます。ただし、コードからキースペースを作成しないように、 jbellisのアドバイスに従うことをお勧めします。

于 2013-02-01T20:47:36.060 に答える