连接到节点时,Datastax cassandra cpp_driver 挂起

Dev*_*lus 4 datastax scylla

我在我的 Debian 9.6 机器上设置了一个 ScyllDB。当我运行时,cqlsh我可以连接到它并创建表,执行查询等。现在我尝试使用 Datstax 驱动程序在 C++ 中编写一个简单的程序,但它无法连接。它在尝试连接时总是阻塞。

我安装的 scylla 包是:

scylla | 3.0.11-0.20191126.3c91bad0d-1~stretch
Run Code Online (Sandbox Code Playgroud)

cpp_driver是 github 的当前 master:https : //github.com/datastax/cpp-driver

现在我尝试运行examples/simple包含在驱动程序中的项目,所以我认为它应该可以工作,但它显示了同样的问题。我没有收到任何错误,它只是阻止了

CassCluster* cluster = cass_cluster_new();
CassSession* session = cass_session_new();
char* hosts = "127.0.0.1";
cass_cluster_set_contact_points(cluster, hosts);
cass_cluster_set_protocol_version(cluster, CASS_PROTOCOL_VERSION_V4);
connect_future = cass_session_connect(session, cluster);

// here it blocks now forever...
er = cass_future_error_code(connect_future);
Run Code Online (Sandbox Code Playgroud)

我也尝试在 Ubuntu 16.04 上运行它,但它显示了同样的问题。由于连接有效,因此cqlsh我认为它不应该是配置问题,而是与 cpp_driver 相关的问题。

我还跟踪了 TCP 连接,我可以看到 cpp_driver 与服务器对话,这看起来类似于 cqlsh 对话。

Dev*_*lus 5

我终于找到了这个问题的解决方案。我们使用的是 cpp_driver 2.15.1,根据他们的发行说明,它显然在偶数处理方面发生了一些变化。当我降级到 2.15.0 时,问题消失了,可以成功建立连接。