【发布时间】:2015-02-04 04:31:47
【问题描述】:
我正在针对 Astyanax 的 EmbeddedCassandra 编写测试用例。
我尝试使用CqlFamilyFactory 构建上下文,并在尝试执行dropKeyspace 时获得NPE:
这是初始化代码:
ConnectionPoolConfiguration cpConfig = new ConnectionPoolConfigurationImpl("cassandra connection pool")
.setPort(9171)
.setSeeds("127.0.0.1:9171")
.setMaxConnsPerHost(4);
m_context = new AstyanaxContext.Builder()
.forCluster("test-cluster")
.forKeyspace("testkeyspace")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl().setDiscoveryType(NodeDiscoveryType.NONE))
.withConnectionPoolConfiguration(cpConfig)
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(CqlFamilyFactory.getInstance());
m_context.start();
m_context.getClient().dropKeyspace();
这将导致 NPE,因为 session 在 CqlKeyspaceImpl:276 (astyanax-cql-2.0.1) 处为空:
return new CqlOperationResultImpl<SchemaChangeResult>(session.execute("DROP KEYSPACE " + keyspaceName), null);
我猜我没有指定上下文创建会话所需的内容,但我找不到很多使用 CqlFamilyFactory 的示例。
代码在使用ThriftFamilyFactory 构建键空间时有效。
【问题讨论】: