From: Markus Valentin Date: Thu, 16 Apr 2020 05:32:36 +0000 (+0200) Subject: lib-sql: driver-cassandra - Extract uncertain ascertainment to function X-Git-Tag: 2.3.13~528 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3d98cebbd4d6d5bc901ee3292a0af2d313a5c19;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: driver-cassandra - Extract uncertain ascertainment to function --- diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index f636da60e7..22bdb859f0 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -1136,6 +1136,20 @@ static bool query_error_want_fallback(CassError error) } } +static enum sql_result_error_type +driver_cassandra_error_is_uncertain(CassError error) +{ + switch (error) { + case CASS_ERROR_SERVER_WRITE_FAILURE: + case CASS_ERROR_SERVER_WRITE_TIMEOUT: + case CASS_ERROR_SERVER_UNAVAILABLE: + case CASS_ERROR_LIB_REQUEST_TIMED_OUT: + return SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN; + default: + return SQL_RESULT_ERROR_TYPE_UNKNOWN; + } +} + static void query_callback(CassFuture *future, void *context) { struct cassandra_result *result = context; @@ -1155,12 +1169,7 @@ static void query_callback(CassFuture *future, void *context) /* Timeouts bring uncertainty whether the query succeeded or not. Also _SERVER_UNAVAILABLE could have actually written enough copies of the data for the query to succeed. */ - result->api.error_type = error == CASS_ERROR_SERVER_WRITE_TIMEOUT || - error == CASS_ERROR_SERVER_WRITE_FAILURE || - error == CASS_ERROR_SERVER_UNAVAILABLE || - error == CASS_ERROR_LIB_REQUEST_TIMED_OUT ? - SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN : - SQL_RESULT_ERROR_TYPE_UNKNOWN; + result->api.error_type = driver_cassandra_error_is_uncertain(error); result->error = i_strdup_printf("Query '%s' failed: %.*s (in %u.%03u secs%s)", result->query, (int)errsize, errmsg, msecs/1000, msecs%1000, result->page_num == 0 ? "" : t_strdup_printf(", page %u", result->page_num));