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

Datastax cassandra cpp_driver hangs when connecting to node

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

我安装的scylla包是:

scylla | 3.0.11-0.20191126.3c91bad0d-1~stretch

cpp_driver 是来自 github 的当前主人: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);

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

的问题

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

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