From: Timo Sirainen Date: Fri, 21 Apr 2017 09:54:17 +0000 (+0300) Subject: cassandra: Use fallback consistency for CASS_ERROR_LIB_NO_HOSTS_AVAILABLE errors X-Git-Tag: 2.3.0.rc1~1715 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b394d41ad4da0e2e7b8bfafccf3b4f3e9ac26ad1;p=thirdparty%2Fdovecot%2Fcore.git cassandra: Use fallback consistency for CASS_ERROR_LIB_NO_HOSTS_AVAILABLE errors I'm not entirely sure if this is always appropriate, but at least this error happens every time when attempting to use write_consistency=two when there is only a single Cassandra node. --- diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index 2eb325830b..87f75322f9 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -846,12 +846,17 @@ static void query_callback(CassFuture *future, void *context) enough nodes available. "All hosts in current policy attempted and were either unavailable or failed" + no hosts available = The client library couldn't connect to + enough cassanra nodes. Error message is the same as for + "unavailable". + write timeout = cassandra server couldn't reach all the needed nodes. this may be because it hasn't yet detected that the servers are down, or because the servers are just too busy. we'll try the fallback consistency to avoid unnecessary temporary errors. */ if ((error == CASS_ERROR_SERVER_UNAVAILABLE || + error == CASS_ERROR_LIB_NO_HOSTS_AVAILABLE || error == CASS_ERROR_SERVER_WRITE_TIMEOUT) && result->fallback_consistency != result->consistency) { /* retry with fallback consistency */