Example #1
0
char*
as_error_string(as_status status)
{
	switch (status) {
		CASE_ASSIGN(AEROSPIKE_OK);
		CASE_ASSIGN(AEROSPIKE_QUERY_END);

		CASE_ASSIGN(AEROSPIKE_ERR_NO_MORE_CONNECTIONS);
		CASE_ASSIGN(AEROSPIKE_ERR_ASYNC_CONNECTION);
		CASE_ASSIGN(AEROSPIKE_ERR_CLIENT_ABORT);
		CASE_ASSIGN(AEROSPIKE_ERR_INVALID_HOST);
		CASE_ASSIGN(AEROSPIKE_NO_MORE_RECORDS);
		CASE_ASSIGN(AEROSPIKE_ERR_PARAM);
		CASE_ASSIGN(AEROSPIKE_ERR_CLIENT);
		CASE_ASSIGN(AEROSPIKE_ERR_SERVER);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_NOT_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_GENERATION);
		CASE_ASSIGN(AEROSPIKE_ERR_REQUEST_INVALID);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_EXISTS);
		CASE_ASSIGN(AEROSPIKE_ERR_BIN_EXISTS);
		CASE_ASSIGN(AEROSPIKE_ERR_CLUSTER_CHANGE);
		CASE_ASSIGN(AEROSPIKE_ERR_SERVER_FULL);
		CASE_ASSIGN(AEROSPIKE_ERR_TIMEOUT);
		CASE_ASSIGN(AEROSPIKE_ERR_NO_XDR);
		CASE_ASSIGN(AEROSPIKE_ERR_CLUSTER);
		CASE_ASSIGN(AEROSPIKE_ERR_BIN_INCOMPATIBLE_TYPE);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_TOO_BIG);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_BUSY);
		CASE_ASSIGN(AEROSPIKE_ERR_SCAN_ABORTED);
		CASE_ASSIGN(AEROSPIKE_ERR_UNSUPPORTED_FEATURE);
		CASE_ASSIGN(AEROSPIKE_ERR_BIN_NOT_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_DEVICE_OVERLOAD);
		CASE_ASSIGN(AEROSPIKE_ERR_RECORD_KEY_MISMATCH);
		CASE_ASSIGN(AEROSPIKE_ERR_NAMESPACE_NOT_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_BIN_NAME);
		CASE_ASSIGN(AEROSPIKE_ERR_FAIL_FORBIDDEN);
		CASE_ASSIGN(AEROSPIKE_SECURITY_NOT_SUPPORTED);
		CASE_ASSIGN(AEROSPIKE_SECURITY_NOT_ENABLED);
		CASE_ASSIGN(AEROSPIKE_SECURITY_SCHEME_NOT_SUPPORTED);
		CASE_ASSIGN(AEROSPIKE_INVALID_COMMAND);
		CASE_ASSIGN(AEROSPIKE_INVALID_FIELD);
		CASE_ASSIGN(AEROSPIKE_ILLEGAL_STATE);
		CASE_ASSIGN(AEROSPIKE_INVALID_USER);
		CASE_ASSIGN(AEROSPIKE_USER_ALREADY_EXISTS);
		CASE_ASSIGN(AEROSPIKE_INVALID_PASSWORD);
		CASE_ASSIGN(AEROSPIKE_EXPIRED_PASSWORD);
		CASE_ASSIGN(AEROSPIKE_FORBIDDEN_PASSWORD);
		CASE_ASSIGN(AEROSPIKE_INVALID_CREDENTIAL);
		CASE_ASSIGN(AEROSPIKE_INVALID_ROLE);
		CASE_ASSIGN(AEROSPIKE_ROLE_ALREADY_EXISTS);
		CASE_ASSIGN(AEROSPIKE_INVALID_PRIVILEGE);
		CASE_ASSIGN(AEROSPIKE_NOT_AUTHENTICATED);
		CASE_ASSIGN(AEROSPIKE_ROLE_VIOLATION);
		CASE_ASSIGN(AEROSPIKE_ERR_UDF);
		CASE_ASSIGN(AEROSPIKE_ERR_LARGE_ITEM_NOT_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_BATCH_DISABLED);
		CASE_ASSIGN(AEROSPIKE_ERR_BATCH_MAX_REQUESTS_EXCEEDED);
		CASE_ASSIGN(AEROSPIKE_ERR_BATCH_QUEUES_FULL);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_NOT_FOUND);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_OOM);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_NOT_READABLE);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_NAME_MAXLEN);
		CASE_ASSIGN(AEROSPIKE_ERR_INDEX_MAXCOUNT);
		CASE_ASSIGN(AEROSPIKE_ERR_QUERY_ABORTED);
		CASE_ASSIGN(AEROSPIKE_ERR_QUERY_QUEUE_FULL);
		CASE_ASSIGN(AEROSPIKE_ERR_QUERY_TIMEOUT);
		CASE_ASSIGN(AEROSPIKE_ERR_QUERY);
			
		default:
			if (status < 0) {
				ERR_ASSIGN(AEROSPIKE_ERR_CLIENT);
			}
			else {
				ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
			}
	}
}
Example #2
0
as_status as_error_fromrc(as_error * err, cl_rv rc) 
{
	switch (rc) {
	case CITRUSLEAF_OK:
		ERR_ASSIGN(AEROSPIKE_OK);
		break;
	case CITRUSLEAF_FAIL_TIMEOUT:
		ERR_ASSIGN(AEROSPIKE_ERR_TIMEOUT);
		break;
	case CITRUSLEAF_FAIL_UNKNOWN:
		ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
		break;
	case CITRUSLEAF_FAIL_NOTFOUND:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_NOT_FOUND);
		break;
	case CITRUSLEAF_FAIL_GENERATION:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_GENERATION);
		break;
	case CITRUSLEAF_FAIL_PARAMETER:
		ERR_ASSIGN(AEROSPIKE_ERR_REQUEST_INVALID);
		break;
	case CITRUSLEAF_FAIL_RECORD_EXISTS:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_EXISTS);
		break;
	case CITRUSLEAF_FAIL_BIN_EXISTS:
		strcpy(err->message, "got bin-exists error - not supported");
		ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
		break;
	case CITRUSLEAF_FAIL_CLUSTER_KEY_MISMATCH:
		// For now, both ordinary request and scan can return this.
		ERR_ASSIGN(AEROSPIKE_ERR_CLUSTER_CHANGE);
		break;
	case CITRUSLEAF_FAIL_PARTITION_OUT_OF_SPACE:
		ERR_ASSIGN(AEROSPIKE_ERR_SERVER_FULL);
		break;
	case CITRUSLEAF_FAIL_SERVERSIDE_TIMEOUT:
		// Conflate with client timeout - apps won't care which was first.
		ERR_ASSIGN(AEROSPIKE_ERR_TIMEOUT);
		break;
	case CITRUSLEAF_FAIL_NOXDS:
		ERR_ASSIGN(AEROSPIKE_ERR_NO_XDR);
		break;
	case CITRUSLEAF_FAIL_UNAVAILABLE:
		// Yes, "unavailable" means a scan with cluster-change flag set won't
		// start, because migrations are happening.
		ERR_ASSIGN(AEROSPIKE_ERR_CLUSTER_CHANGE);
		break;
	case CITRUSLEAF_FAIL_INCOMPATIBLE_TYPE:
		ERR_ASSIGN(AEROSPIKE_ERR_BIN_INCOMPATIBLE_TYPE);
		break;
	case CITRUSLEAF_FAIL_RECORD_TOO_BIG:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_TOO_BIG);
		break;
	case CITRUSLEAF_FAIL_KEY_BUSY:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_BUSY);
		break;
	case CITRUSLEAF_FAIL_BIN_NOT_FOUND:
		strcpy(err->message, "got bin-not-found error - not supported");
		ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
		break;
	case CITRUSLEAF_FAIL_DEVICE_OVERLOAD:
		ERR_ASSIGN(AEROSPIKE_ERR_DEVICE_OVERLOAD);
		break;
	case CITRUSLEAF_FAIL_KEY_MISMATCH:
		ERR_ASSIGN(AEROSPIKE_ERR_RECORD_KEY_MISMATCH);
		break;

	// TODO - just guessing from here on down ... fill out correctly.

	case CITRUSLEAF_FAIL_SCAN_ABORT:
		ERR_ASSIGN(AEROSPIKE_ERR_SCAN_ABORTED);
		break;
	case CITRUSLEAF_FAIL_UNSUPPORTED_FEATURE:
		ERR_ASSIGN(AEROSPIKE_ERR_UNSUPPORTED_FEATURE);
		break;
	case CITRUSLEAF_FAIL_INVALID_DATA:
		ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
		break;
	case CITRUSLEAF_FAIL_UDF_BAD_RESPONSE:
		ERR_ASSIGN(AEROSPIKE_ERR_UDF);
		break;
    case CITRUSLEAF_FAIL_UDF_LUA_EXECUTION:
        ERR_ASSIGN(AEROSPIKE_ERR_UDF); 
        break; 
	case CITRUSLEAF_FAIL_INDEX_FOUND:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_FOUND);
		break;
	case CITRUSLEAF_FAIL_INDEX_NOTFOUND:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_NOT_FOUND);
		break;
	case CITRUSLEAF_FAIL_INDEX_OOM:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_OOM);
		break;
	case CITRUSLEAF_FAIL_INDEX_NOTREADABLE:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_NOT_READABLE);
		break;
	case CITRUSLEAF_FAIL_INDEX_GENERIC:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX);
		break;
	case CITRUSLEAF_FAIL_INDEX_NAME_MAXLEN:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_NAME_MAXLEN);
		break;
	case CITRUSLEAF_FAIL_INDEX_MAXCOUNT:
		ERR_ASSIGN(AEROSPIKE_ERR_INDEX_MAXCOUNT);
		break;
	case CITRUSLEAF_FAIL_QUERY_ABORTED:
		ERR_ASSIGN(AEROSPIKE_ERR_QUERY_ABORTED);
		break;
	case CITRUSLEAF_FAIL_QUERY_QUEUEFULL:
		ERR_ASSIGN(AEROSPIKE_ERR_QUERY_QUEUE_FULL);
		break;
	case CITRUSLEAF_FAIL_QUERY_TIMEOUT:
		// TODO - is this ok?
		// Conflate with client timeout - apps won't care which was first.
		ERR_ASSIGN(AEROSPIKE_ERR_TIMEOUT);
		break;
	case CITRUSLEAF_FAIL_QUERY_GENERIC:
		ERR_ASSIGN(AEROSPIKE_ERR_QUERY);
		break;
	default:
		if (rc < 0) {
			// TODO - what about CITRUSLEAF_FAIL_ASYNCQ_FULL?
			ERR_ASSIGN(AEROSPIKE_ERR_CLIENT);
		}
		else if (rc == ETIMEDOUT) {
			ERR_ASSIGN(AEROSPIKE_ERR_TIMEOUT);
		}
		else {
			ERR_ASSIGN(AEROSPIKE_ERR_SERVER);
		}
		break;
	}

	return err->code;
}