在 Cassandra/Astyanax 开发环境中,我正在运行单个/本地 Cassandra 节点。当这个单个 Cassandra 节点出现故障(无论出于何种原因)时,任何基于 Astyanax 的客户端代码(突变批处理、查询......)都会失败,并出现以下情况:
com.netflix.astyanax.connectionpool.exceptions.NoAvailableHostsException: NoAvailableHostsException: [host=None(0.0.0.0):0, latency=0(0), attempts=0]No hosts to borrow from
at com.netflix.astyanax.connectionpool.impl.RoundRobinExecuteWithFailover.<init>(RoundRobinExecuteWithFailover.java:30)
at com.netflix.astyanax.connectionpool.impl.TokenAwareConnectionPoolImpl.newExecuteWithFailover(TokenAwareConnectionPoolImpl.java:80)
at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:248)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4.execute(ThriftColumnFamilyQueryImpl.java:532)
并且为每个后续基于 Astyanax 的客户端请求记录此异常,从而导致上述日志垃圾邮件。基本上,我在问是否有办法配置 Astyanax 连接池以停止接受请求并理想地提供某种回调,允许我关闭基于 Astyanax 的客户端应用程序(例如我们的服务器应用程序)。