static as_status as_scan_command_execute(as_scan_task* task) { as_command_node cn; cn.node = task->node; as_error err; as_error_init(&err); as_status status = as_command_execute(&err, &cn, task->cmd, task->cmd_size, task->policy->timeout, AS_POLICY_RETRY_NONE, as_scan_parse, task); if (status) { // Set main error only once. if (ck_pr_fas_32(task->error_mutex, 1) == 0) { // Don't set error when user aborts query, if (status != AEROSPIKE_ERR_CLIENT_ABORT) { as_error_copy(task->err, &err); } } } return status; }
static as_status as_scan_command_execute(as_scan_task* task) { as_error err; as_error_init(&err); as_status status; if (task->cluster_key && ! task->first) { status = as_query_validate(&err, task->node, task->scan->ns, task->cluster_key); if (status) { // Set main error only once. if (as_fas_uint32(task->error_mutex, 1) == 0) { as_error_copy(task->err, &err); } return status; } } as_command cmd; cmd.cluster = task->cluster; cmd.policy = &task->policy->base; cmd.node = task->node; cmd.ns = NULL; // Not referenced when node set. cmd.partition = NULL; // Not referenced when node set. cmd.parse_results_fn = as_scan_parse; cmd.udata = task; cmd.buf = task->cmd; cmd.buf_size = task->cmd_size; cmd.partition_id = 0; // Not referenced when node set. cmd.replica = 0; // Not referenced when node set. cmd.flags = AS_COMMAND_FLAGS_READ; as_command_start_timer(&cmd); status = as_command_execute(&cmd, &err); if (status) { // Set main error only once. if (as_fas_uint32(task->error_mutex, 1) == 0) { // Don't set error when user aborts query, if (status != AEROSPIKE_ERR_CLIENT_ABORT) { as_error_copy(task->err, &err); } } return status; } if (task->cluster_key) { status = as_query_validate(&err, task->node, task->scan->ns, task->cluster_key); if (status) { // Set main error only once. if (as_fas_uint32(task->error_mutex, 1) == 0) { as_error_copy(task->err, &err); } return status; } } return status; }